Git Product home page Git Product logo

yard's Introduction

Yet another release downloader (YARD)

GitHub release GitHub license Build Status Quality Gate Coverage Tech debt

Приложение oscript для загрузки и обработки релизов конфигураций 1С.

Требуются следующие библиотеки и инструменты:

Важно 1: Архиватор 7-zip должен поддерживать распаковку rar-архивов. Для этого на linux нужно поставить пакет с поддержкой такого режима. Например, на Ubuntu:

apt-get install p7zip-rar p7zip-full

Важно 2: Для ковентации в формат ЕДТ необходима установленная ЕДТ и ring

Общие сведения

  • выполняет загрузку приложений с сайта релизов 1С

  • для релизов конфигураций доступны следующие возможности

    • загрузка указанных версий конфигурации
    • распаковка архива конфигурации (требуется 7-zip)
    • распаковка файлов шаблона конфигурации в указанный каталог (из формата EFD)
    • последовательная сборка CF-фалов конфигурации из CFU-файлов обновлений (требуется начальный CF)
    • Конвертация в формат ЕДТ (при необходимости)
    • последовательная выгрузка версий конфигурации в формате XML в указанный репозитарий GIT
  • Реализованы 2 варианта работы:

    • запуск отдельных команд для каждого этапа обработки релизов конфигураций
    • экспериментальный пакетный режим с конвейерной обработкой данных (pipeline), т.е. каждая порция данных, полученная в текущей обработке передается в указанный(-ные) в настройках обработчик(-и) для последующе обработки
  • настройки пакетного режима описываются в формате JSON (см. Файл настроек)

Команды

  • process (p) - выполняет обработку данных настройкам из файла (.json)

    • --work-dir - путь к рабочему каталогу (по умолчанию: текущий каталог)
    • <Путь> - путь к файлу настроек (по умолчанию ./yardsettings.json)

    Пользователя и пароль портала 1С можно передать с помощью переменных среды:

    • YARD_RELEASES_USER - пользователь портала 1С;
    • YARD_RELEASES_PWD - пароль пользователя портала 1С.

Пример:

yard process --work-dir "c:\tmp" ".\examples\releases2templates.json"

см. Файл настроек

  • releases (r) - работа с релизами с сайта 1С
    • --user - пользователь портала 1С

    • --pwd - пароль пользователя портала 1С

    • list (l) - получение списка приложений и версий с портала 1С

      • --app-filter - фильтр приложений по имени (регулярное выражение)
      • --version-filter - фильтр версий по номеру (регулярное выражение)
      • --version-start-date - фильтр по начальной дате версии (формат: dd.MM.yyyy, включая дату)
      • --version-end-date - фильтр по последней дате версии (формат: dd.MM.yyyy, включая дату)
      • --output-file - путь к фалу (json) для сохранения списка приложений и версий

Пример:

yard releases --user "user" --pwd "pwd" list --app-filter "Библиотека стандартных подсистем.*3\.1" --version-filter 3\.1.* --version-start-date "01.01.2019" --output-file ".\tmp\releases.json"
  • get (g) - загрузка указанных версий, указанных приложений с портала 1С
    • --app-filter - фильтр приложений по имени (регулярное выражение)
    • --version-filter - фильтр версий по номеру (регулярное выражение)
    • --version-start-date - фильтр по начальной дате версии (формат: dd.MM.yyyy, включая дату)
    • --version-end-date - фильтр по последней дате версии (формат: dd.MM.yyyy, включая дату)
    • --path - каталог для загрузки релизов 1С
    • --from-last-version - флаг загрузки версий с номером старше последней версии в каталоге для загрузки (проверяются файлы description.json)
    • --download-existing - флаг принудительной загрузки ранее загруженных версий в каталоге для загрузки (проверяются файлы description.json)
    • --download-limit - ограничение количества загружаемых версий за 1 запуск
    • --extract - флаг распаковки загруженного архива
    • --extract-path - каталог для распаковки загруженного архива
    • --extract-dir - регулярное выражение, отбора каталогов в архиве EFD для распаковки
    • --extract-files - список файлов для распаковки из архива дистрибутива, разделенный "|"
    • --extract-existing - флаг принудительной распаковки ранее распакованных дистрибутивов версий в каталоге для распаковки (проверяются файлы description.json)
    • --delete - флаг удаления загруженного архива после распаковки

Пример:

yard releases --user "user" --pwd "pwd" get --app-filter "Библиотека стандартных подсистем.*3\.1" --version-filter 3\.1.* --version-start-date "01.01.2019" --path ".\tmp\distr" --extract --extract-path ".\tmp\tmplts"
  • extract (e) - распаковка шаблона конфигурации 1С из EFD-файла дистрибутива конфигурации 1С
    • --path - путь к дистрибутиву конфигурации 1С
    • --extract-path - каталог для распаковки загруженного архива
    • --extract-dir - регулярное выражение, отбора каталогов в архиве EFD для распаковки
    • --extract-files - список файлов для распаковки из архива дистрибутива, разделенный "|"
    • --extract-existing - флаг принудительной распаковки ранее распакованных дистрибутивов в каталоге для распаковки (проверяются файлы description.json)
    • --app-name - имя конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
    • --app-id - идентификатор конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
    • --app-version - версия конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)

Пример:

yard unpack --app-name "Библиотека стандартных подсистем, редакция 3.1" --app-id "SSL31" --app-version "3.1.2.332" --path ".\tmp\distr\SSL31\3.1.2.332" --extract-path ".\tmp\tmplts"
  • extract-all (ea) - для всех дистрибутивов в каталоге выполняет распаковку шаблонов конфигураций 1С из EFD-файлов
    • --path - путь к каталогу содержащему дистрибутивы конфигурации для распаковки
    • --extract-path - каталог для распаковки шаблонов конфигурации
    • --extract-dir - регулярное выражение, отбора каталогов в архиве EFD для распаковки
    • --extract-files - список файлов для распаковки из архива дистрибутива, разделенный "|"
    • --extract-existing - флаг принудительной распаковки ранее распакованных дистрибутивов в каталоге для распаковки (проверяются файлы description.json)

Пример:

yard unpack --app-name "Библиотека стандартных подсистем, редакция 3.1" --app-id "SSL31" --app-version "3.1.2.332" --path ".\tmp\distr\SSL31\3.1.2.332" --extract-path ".\tmp\tmplts"
  • build-cf (b) - выполняет обновление конфигурации (CF) файлом обновления (CFU) и помещает результат в новый файл CF
    • --cf-path - путь к файлу конфигурации (CF) предыдущей версии
    • --cfu-path - путь к файлу обновления (CFU) новой версии
    • --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)

Пример:

yard build-cf --cf-path ".\tmp\tmplts\1c\AccountingCorp\3_0_64_54\1cv8.cf" --cfu-path ".\tmp\tmplts\1c\AccountingCorp\3_0_66_53\1cv8.cfu" --ibconnection "/SMyServer\TMP_BASE"
  • build-all (ba) - для всех файлов обновления (CFU) в каталоге ищет доступные для обновления файлы(CF) и выполняет обновление
    • --path - путь к каталогу содержащему версии конфигурации для формирования CF-файлов
    • --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)

Пример:

yard build-all --path ".\tmp\tmplts\1c\AccountingCorp" --ibconnection "/SMyServer\TMP_BASE"
  • upload-cf (ucf) - выполняет выгрузку конфигурации 1С из файла конфигурации (CF) в репозитарий git
    • --cf-path - путь к файлу конфигурации (CF) для выгрузки
    • --git-path - путь к репозитарию git
    • --git-branch - имя ветки git в которую будет выполняться выгрузка (по умолчанию: base1c)
    • --git-author - имя автора коммита в git (по умолчанию: 1c)
    • --git-author-email - почта автора коммита в git (по умолчанию: [email protected])
    • --git-commit-date - дата коммита в git в формате POSIX (формат: yyyy-MM-dd hh:mm:ss, по умолчанию: <ТекущаяУниверсальнаяДата>)
    • --git-commit-message - сообщение коммита в git
    • --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)

Пример:

yard upload-cf --cf-path ".\tmp\tmplts\SSL31\3.1.1.91\1cv8.cf" --git-path ".\tmp\repo\SSL31" --git-commit-message "Тест выгрузки БСП 3.1.1.91" --ibconnection "/SMyServer\TMP_BASE"
  • upload-all (ua) - выполняет выгрузку всех версий конфигурации 1С в каталоге в репозитарий git
    • --path - путь к каталогу содержащему версии конфигурации для выгрузки в git
    • _--cf-name - имя файла конфигурации (по умолчанию: 1cv8.cf)
    • --git-path - путь к репозитарию git
    • --git-author - имя автора коммита в git (по умолчанию: 1c)
    • --git-author-email - почта автора коммита в git (по умолчанию: [email protected])
    • --ibconnection - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)

Пример:

yard upload-all --path ".\tmp\tmplts\SSL31\" --cfname "1cv8.cf" --git-path ".\tmp\repo\SSL31" --ibconnection "/SMyServer\TMP_BASE"

Управляющие обработки

МенеджерОбработкиДанных.os

Управляющая обработка-менеджер, читает настройки, запускает и управляет обработкой данных.

yard.os

Обработка для интерактивного выполнения команд обработки релизов.

Стандартный программный интерфейс обработки

Функция ОписаниеПараметров() - возвращает структуру с описанием параметров обработки

Функция МенеджерОбработкиДанных() - возвращает ссылку на вызывающую/управляющую обработку - менеджер обработки данных

Процедура УстановитьМенеджерОбработкиДанных(Знач НовыйМенеджерОбработкиДанных) - устанавливает ссылку на вызывающую/управляющую обработку - менеджер обработки данных

Функция Идентификатор() - возвращает идентификатор обработки, установленный при инициализации в менеджере обработки данных

Процедура УстановитьИдентификатор(Знач НовыйИдентификатор) - устанавливает идентификатор обработки, вызывается при инициализации в менеджере обработки данных

Функция ПараметрыОбработкиДанных() - возвращает значения параметров обработки данных

Процедура УстановитьПараметрыОбработкиДанных(Знач НовыеПараметры) - устанавливает значения параметров обработки данных

Функция ПараметрОбработкиДанных(Знач ИмяПараметра) - возвращает значение указанного параметра обработки данных

Процедура УстановитьПараметрОбработкиДанных(Знач ИмяПараметра, Знач Значение) - устанавливает значение указанного параметра обработки

Процедура УстановитьДанные(Знач ВходящиеДанные) - устанавливает данные для обработки

Процедура ОбработатьДанные() - выполняет обработку данных

Функция РезультатОбработки() - возвращает результаты обработки данных

Процедура ЗавершениеОбработкиДанных() - выполняет действия при окончании обработки данных и оповещает обработку-менеджер о завершении обработки данных

Обработчики данных

СписокРелизов1С.os

Получает с сайта 1С список релизов и выводит в консоль или в указанный файл.

Параметры

  • ИмяПользователя - Имя пользователя сайта релизов 1С
  • ПарольПользователя - Пароль пользователя сайта релизов 1С
  • ФильтрПриложений - Фильтр имен приложений
  • ФильтрВерсий - Фильтр номеров версий
  • ФильтрВерсийНачинаяСДаты - Фильтр по начальной дате версии (включая)
  • ФильтрВерсийДоДаты - Фильтр по последней дате версии (включая)
  • ПутьКФайлуДляСохранения - путь к фалу (json) для сохранения списка приложений и версий

ЗагрузчикРелизов1С.os

Выполняет загрузку указанных приложений и версий с сайта 1С и, при необходимости, распаковывает файлы шаблона конфигурации 1С.

Параметры

  • ИмяПользователя - Имя пользователя сайта релизов 1С
  • ПарольПользователя - Пароль пользователя сайта релизов 1С
  • ФильтрПриложений - Фильтр имен приложений
  • ФильтрВерсий - Фильтр номеров версий
  • ФильтрВерсийНачинаяСДаты - Фильтр по начальной дате версии (включая)
  • ФильтрВерсийДоДаты - Фильтр по последней дате версии (включая)
  • КаталогДляСохранения - каталог для загрузки релизов 1С
  • РаспаковыватьEFD - Истина - если загруженный архив содержит упакованный шаблонконфигурации (содержит файл 1cv8.efd), то он будет распакован
  • КаталогДляРаспаковкиEFD - каталог для распаковки шаблона конфигурации
  • КаталогВАрхивеДляРаспаковкиEFD - регулярное выражение, отбора каталогов в архиве EFD для распаковки
  • ФайлыДляРаспаковкиEFD - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы
  • УдалитьПослеРаспаковкиEFD - Истина - после рапаковки загруженный архив будет удален

РаспаковщикРелизов1С.os

Выполняет распаковку файлов шаблона конфигурации 1С из EFD-файла дистрибутива.

Параметры

  • Приложение_Имя - имя конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
  • Приложение_Ид - идентификатор конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
  • Приложение_Версия - версия конфигурации 1С (если не указано, значение будет считано из файла 1cv8.mft дистрибутива)
  • ПутьКДистрибутиву - путь к дистрибутиву конфигурации 1С
  • КаталогДляРаспаковкиEFD - каталог для распаковки шаблона конфигурации
  • КаталогВАрхивеДляРаспаковкиEFD - регулярное выражение, отбора каталогов в архиве EFD для распаковки
  • ФайлыДляРаспаковкиEFD - список файлов для распаковки из архива EFD дистрибутива конфигурации, если не указан, то распаковываются все файлы

СборщикКонфигураций1С.os

Выполняет обновление конфигурации (CF) файлом обновления (CFU) и помещает результат в новый файл CF.

Параметры

  • ПутьККонфигурации - путь к файлу конфигурации (CF) предыдущей версии
  • ПутьКОбновлению - путь к файлу обновления (CFU) новой версии
  • База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)

СборщикКонфигураций1СВКаталоге.os

Для всех файлов обновления (CFU) в каталоге ищет доступные для обновления файлы(CF) и выполняет обновление.

Параметры

  • ПутьККаталогуКонфигураций - путь к каталогу содержащему версии конфигурации для формирования CF-файлов
  • База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)

ВыгрузкаКонфигурацииВГит.os

Выполняет выгрузку конфигурации 1С из файла конфигурации (CF) в репозитарий git.

Параметры

  • ПутьККонфигурации - путь к файлу конфигурации (CF) для выгрузки
  • РепозитарийГит - путь к репозитарию git
  • ИмяВеткиГит - имя ветки git в которую будет выполняться выгрузка (по умолчанию: base1c)
  • ИмяАвтора - имя автора коммита в git (по умолчанию: 1c)
  • ПочтаАвтора - почта автора коммита в git (по умолчанию: [email protected])
  • ДатаКоммита - дата коммита в git в формате POSIX
  • СообщениеКоммита - сообщение коммита в git
  • База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
  • Конвертировать в формат ЕДТ - флаг конвертации в формат ЕДТ
  • Относительный путь к исходникам - Относительный путь внутри репозитории к исходникам проекта, по умолчанию (src/cf)

ВыгрузкаКаталогаКонфигурацииВГит.os

Выполняет выгрузку конфигурации 1С из файла конфигурации (CF) в репозитарий git.

Параметры

  • ПутьККонфигурации - путь к каталогу содержащему версии конфигурации для выгрузки в git
  • ИмяФайлаКонфигурации - имя файла конфигурации (по умолчанию: "1Cv8.cf")
  • РепозитарийГит - путь к репозитарию git
  • ИмяАвтора - имя автора коммита в git (по умолчанию: 1c)
  • ПочтаАвтора - почта автора коммита в git (по умолчанию: [email protected])
  • База_СтрокаСоединения - строка подключения к служебной базе 1С для выполнения обновления (если не указана, будет использована временная ИБ)
  • Конвертировать в формат ЕДТ - флаг конвертации в формат ЕДТ
  • Относительный путь к исходникам - Относительный путь внутри репозитории к исходникам проекта, по умолчанию (src/cf)

Файл настроек (JSON)

Структура файла настроек

Файл настроек описывает последовательность вызова обработчиков для обработки данных. обработчик = обработка 1С реализующая вышеуказанный API.

    |-> Описание обработчика
    |      |- ИдОбработчика     - строковый идентификатор обработчика (необязательный)
    |      |- ИмяОбработки      - имя класса обработчика
    |      |- ПутьКОбработке    - путь к oscript-файлу класса обработчика
    |      |- Параметры         - структура параметров обработки
    |      |      |- <просто параметр>                 - параметр простого типа
    |      |      |- <параметр из данных обработчика>  - параметр вычисляемый обработчиком
    |      |      |      |- ИдОбработчика              - идентификатор обработчика из которого будет получен параметр
    |      |      |      |- ФункцияПолученияЗначения   - имя функции получения значения параметра (по умолчанию: "ПолучитьРезультат")
    |      |- Обработчики      - массив обработчиков данных полученных на текущем уровне
    |             |- <Описание обработчика>*           - структура, аналогичная данной
    |____________________|

Доступные подстановки

  • $settingsDir - каталог файла настроек
  • $yardDir - каталог запуска скрипта
  • $workDir - указанный при запуске рабочий каталог (по умолчанию: каталог файла настроек)

Пример файла настроек

Пример файла настроек чтения словарей журнала регистрации

{
    // имя класса обработчика получения списка релизов
    "ИмяОбработки":"СписокРелизов1С",
    "Параметры":{
        "ИмяПользователя" : "user",
        "ПарольПользователя" : "password",
        // Регулярки для фильтра приложений/конфигураций по имени
        "ФильтрПриложений" : ["Библиотека стандартных подсистем.*3\\.1"],
        // Регулярки для фильтра версий по номеру
        "ФильтрВерсий" : ["3\\.1\\.2.*"],
        "ФильтрВерсийНачинаяСДаты" : "2020-01-01T00:00:00",
    },
    "Обработчики":[
        {
            // имя класса обработчика загрузки релизов
            "ИмяОбработки":"ЗагрузчикРелизов1С",
            "ИдОбработчика":"ЗагрузчикБСП",
            "Параметры":{
                "ИмяПользователя" : "user",
                "ПарольПользователя" : "password",
                "КаталогДляСохранения" : "$workDir\\tmp\\distr",
                // флаг распаковки шаблона
                "РаспаковыватьEFD" : true,
                // путь распаковки шаблона конфигурации
                "КаталогДляРаспаковкиEFD" : "$workDir\\tmp\\tmplts"
            }
        }
    ]
}

Больше примеров расположены в каталоге examples.

yard's People

Contributors

arkuznetsov avatar iscarimet avatar otymko avatar mors1eska avatar daabramov avatar stop-time avatar prodoomman avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.