diff --git a/.gitignore b/.gitignore index 25e5d678..ef87b79e 100644 --- a/.gitignore +++ b/.gitignore @@ -7,10 +7,10 @@ bdd-*.xml .enabled-plugins coverage/* -bin/* *.ospx oscript_modules/ +tests/fixtures/gitsync-plugins/* embedded_plugins/*.ospx src/cmd/oscript.cfg @@ -18,6 +18,6 @@ src/cmd/oscript.cfg *.cfl *.1CL 1cv8dtmp.1CD -tests/fixtures/extension_storage/data/ -tests/fixtures/extension_storage/cache/ -tests/fixtures/extension_storage/ver +# tests/fixtures/extension_storage/data/ +# tests/fixtures/extension_storage/cache/ +# tests/fixtures/extension_storage/ver diff --git a/TODO b/TODO deleted file mode 100644 index d5a7ec82..00000000 --- a/TODO +++ /dev/null @@ -1,6 +0,0 @@ -[] Добавить чистку кеша Хранилища 1С по отдельному флагу (или подключаемому плагину) -[] Команда all - [] Чтение файла формата json - [] Чтение файла формата yaml - [] Чтение файла формата xml для совместимости??? -[] Описать интерфейс подписчиков отдельно diff --git a/bin/tempExtension.cfe b/bin/tempExtension.cfe new file mode 100644 index 00000000..3f28e7aa Binary files /dev/null and b/bin/tempExtension.cfe differ diff --git a/build_packagedef b/build_packagedef index 1e92459a..25b322bf 100644 --- a/build_packagedef +++ b/build_packagedef @@ -1,12 +1,8 @@ -#Использовать logos #Использовать fs -Перем Лог; Процедура ПередСборкой(Знач РабочийКаталог) Экспорт - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); - - Лог.Информация("Установка локальных зависимостей библиотек"); + Сообщить("Установка локальных зависимостей библиотек"); КомандаOpm = Новый Команда; КомандаOpm.УстановитьКоманду("opm"); @@ -19,27 +15,12 @@ ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; - Лог.Информация("Настройка локальных библиотек"); - - ПутьКФайлуЗагрузчику = ОбъединитьПути(РабочийКаталог, "oscript_modules", "package-loader.os"); - ШаблонныйФайлЗагрузчик = ОбъединитьПути(РабочийКаталог, "templates", "package-loader.os"); - ФайлЗагрузчик = Новый Файл(ПутьКФайлуЗагрузчику); - Если Не ФайлЗагрузчик.Существует() Тогда - КопироватьФайл(ШаблонныйФайлЗагрузчик, ПутьКФайлуЗагрузчику); - Лог.Информация("Добавлен файл загрузки локальных библиотек"); - КонецЕсли; + Сообщить("Получение последней версии плагинов"); - ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); - ШаблонныйФайлНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "templates", "oscript.cfg"); - ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); - Если Не ФайлНастройкиСкрипта.Существует() Тогда - КопироватьФайл(ШаблонныйФайлНастройкиСкрипта, ПутьКФайлуНастройкиСкрипта); - Лог.Информация("Добавлен файл настройки запуска"); - КонецЕсли; - КомандаOpm = Новый Команда; КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("run get-plugins"); + КомандаOpm.ДобавитьПараметр("develop"); КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); @@ -51,10 +32,6 @@ КонецПроцедуры -Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт - -КонецПроцедуры - Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); @@ -67,23 +44,15 @@ КонецПроцедуры -Лог = Логирование.ПолучитьЛог("task.build"); - -//Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); - -ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src/cmd", "Модули", "ПараметрыПриложения.os"); -ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров); -ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПриложения()); -ВерсияПродукта = ПараметрыСистемы_ЛокальнаяВерсия.Версия(); - -Описание.Имя(ИмяПродукта) - .Версия(ВерсияПродукта) - .ВерсияСреды("1.0.20") +Описание.Имя("gitsync") + .Версия("3.0.0-rc.2") + .ВерсияСреды("1.0.21") .ВключитьФайл("src") .ВключитьФайл("embedded_plugins") .ВключитьФайл("oscript_modules") .ВключитьФайл("docs") .ВключитьФайл("readme.md") + .ОпределяетКласс("МенеджерПлагинов", "src/core/Классы/МенеджерПлагинов.os") .ОпределяетКласс("МенеджерСинхронизации", "src/core/Классы/МенеджерСинхронизации.os") - .ОпределяетКласс("УправлениеПлагинами", "src/core/Классы/УправлениеПлагинами.os") - .ИсполняемыйФайл("src/cmd/gitsync.os", ИмяПродукта); \ No newline at end of file + .ОпределяетКласс("ПакетнаяСинхронизация", "src/core/Классы/ПакетнаяСинхронизация.os") + .ИсполняемыйФайл("src/cmd/gitsync.os"); \ No newline at end of file diff --git a/config-example.json b/config-example.json deleted file mode 100644 index 87c36e4a..00000000 --- a/config-example.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "gitsync-options": - { - "global": - { - "-email": "server.com", - "-v8version": "1cv8.exe", - "-plugins": - [ - "pull", - "push", - "vendorUpload", - "smart-tags", - "increment" - ], - "flags": - { - "-limit": 5, - "--storage-user": "Администратор" - } - }, - "repositories" : [ - { - "name" : "test", - "git-local-path": "путь1", - "git-remote": "адрес1", - "v8-storage-dir": "каталог1", - "-plugins": - [ - "pull", - "push", - "vendorUpload", - "smart-tags", - "increment" - ] - , - "flags": { - "-limit": 5, - "--storage-user": "Администратор" - } - }, - { - "name" : "test2", - "git-local-path": "путь2", - "git-remote": "адрес2", - "v8-storage-dir": "каталог2", - "-plugins": - [ - "pull", - "push", - "vendorUpload", - "smart-tags", - "increment" - ] - , - "flags": { - "-limit": 5, - "--storage-user": "Администратор" - } - } - ] - } -} diff --git a/config-example.xml b/config-example.xml deleted file mode 100644 index fc64d1f1..00000000 --- a/config-example.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - server.com - 8.3.6 - git - - - - путь1 - адрес1 - каталог1 - - - - - - путь2 - адрес2 - каталог2 - gmail.com - - - - - \ No newline at end of file diff --git a/config-example.yaml b/config-example.yaml deleted file mode 100644 index 18098b84..00000000 --- a/config-example.yaml +++ /dev/null @@ -1,47 +0,0 @@ -globals: - storage-user: Администратор - storage-pwd: '' - git-path: git - temp-dir: "" - v8version: 8.3 - domain-email: localhost - lic-try-count: 5 - plugins: - enable: - - test - - test2 - disable: - - test3 - plugins-config: - git-url: git-url - push: true - pull: true -repositories: - - name: <ТестовыйРепозиторий> - disable: true - storage-path: <КаталогХранилища1С_1> - git-local-path: <ПутьКаталогаИсходников_1> - - name: <ТестовыйРепозиторий2> - disable: true - storage-path: <КаталогХранилища1С_2> - git-local-path: <ПутьКаталогаИсходников_2> - storage-user: Администратор - storage-pwd: '' - git-path: git - temp-dir: "" - v8version: 8.3 - domain-email: localhost - lic-try-count: 5 - plugins: - enable: - - test - - test2 - disable: - - test3 - plugins-config: - git-url: git-url - push: true - pull: true - - - \ No newline at end of file diff --git a/docs/usage.md b/docs/usage.md new file mode 100644 index 00000000..e69de29b diff --git a/features/cmd/all.feature b/features/cmd/all.feature new file mode 100644 index 00000000..f459136a --- /dev/null +++ b/features/cmd/all.feature @@ -0,0 +1,55 @@ +# language: ru + +Функционал: Проверка работы команды all + Как Пользователь + Я хочу выполнить клонирование существующего репозитория гит + Чтобы выполнять автоматическую выгрузку конфигураций из хранилища + +Структура сценария: <Сценарий> + Дано Я очищаю параметры команды "gitsync" в контексте + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + + # Подготовка хранилища 1 + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_1" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_1" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_1" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_1" + И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1" + И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1" + + # Подготовка хранилища 2 + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С_2" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С_2" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников_2" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников_2" + И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_2" + И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_2" + + # Подготовка хранилища 2 + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилищаРасширения" + И я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилищаРасширения" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходниковРасширения" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходниковРасширения" + И Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходниковРасширения" + И Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходниковРасширения" + + И Я создаю файл настройки из файла <ПутьКФайлуШаблона> и сохраняю в переменную "FILE" + + Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + # И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "all" для команды "gitsync" + И Я добавляю параметр <ДопПараметрыЗапуска> для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "FILE" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит <Результат> + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + +Примеры: + | Сценарий | ПутьКФайлуШаблона | ДопПараметрыЗапуска | Результат | + | Выполнение синхронизации по имени | tests/fixtures/default.yaml | --name ТестовыйРепозиторий | ИНФОРМАЦИЯ - Наименование: <ТестовыйРепозиторий> | + | Выполнение синхронизации с несколькими хранилищами | tests/fixtures/default.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды | + | Выполнение синхронизации расширениями | tests/fixtures/ext.yaml | | ИНФОРМАЦИЯ - Завершено выполнение команды | + \ No newline at end of file diff --git a/features/cmd/extention.feature b/features/cmd/extention.feature new file mode 100644 index 00000000..a4258692 --- /dev/null +++ b/features/cmd/extention.feature @@ -0,0 +1,30 @@ +# language: ru + +Функционал: Проверка работы с хранилищем расширения + Как Пользователь + Я хочу выполнить клонирование существующего репозитория гит + Чтобы выполнять автоматическую выгрузку конфигураций из хранилища + +Контекст: Тестовый контекст + Когда Я очищаю параметры команды "gitsync" в контексте + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С" + И я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И Я создаю тестовой файл AUTHORS + И Я записываю "0" в файл VERSION + + Сценарий: Простая синхронизация хранилища с git-репозиторием + Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "sync" для команды "gitsync" + И Я добавляю параметр "-e test" для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 \ No newline at end of file diff --git a/features/cmd/fixtures/default.yaml b/features/cmd/fixtures/default.yaml new file mode 100644 index 00000000..3bfca11f --- /dev/null +++ b/features/cmd/fixtures/default.yaml @@ -0,0 +1,34 @@ +globals: + storage-user: Администратор + storage-pwd: '' + git-path: git + v8version: 8.3 + domain-email: localhost + lic-try-count: 5 + plugins: + enable: + - test + - test2 + disable: + - test3 +repositories: + - name: ТестовыйРепозиторий + # disable: false + path: <КаталогХранилища1С_1> + dir: <ПутьКаталогаИсходников_1> + plugins: + more: + - test3 + plugins-config: + + - name: ТестовыйРепозиторий2 + # disable: true + path: <КаталогХранилища1С_2> + dir: <ПутьКаталогаИсходников_2> + storage-user: Администратор + storage-pwd: '' + git-path: git + temp-dir: "" + v8version: 8.3 + domain-email: localhost + lic-try-count: 5 \ No newline at end of file diff --git a/features/cmd/ibconnection.feature b/features/cmd/ibconnection.feature new file mode 100644 index 00000000..ff9c1d7a --- /dev/null +++ b/features/cmd/ibconnection.feature @@ -0,0 +1,64 @@ +# language: ru + +Функционал: Синхронизация в конкретной информационной базе + Как Пользователь + Я хочу иметь возможность указать не стандартный путь к платформе 1С + Чтобы иметь возможность запускать синхронизацию с указание конкретной информационной базы + +Контекст: Тестовый контекст + Когда Я очищаю параметры команды "gitsync" в контексте + И Я создаю новый объект ГитРепозиторий + И Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке + И Я создаю временный каталог и сохраняю его в переменной "КаталогХранилища1С" + И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" + И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" + И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И Я создаю временную базу и сохраняю в переменную "ВременнаяБаза" + И Я создаю тестовой файл AUTHORS + И Я записываю "0" в файл VERSION + +Сценарий: Простая синхронизация хранилища с git-репозиторием + Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + И Я добавляю параметр "--ib-connection" для команды "gitsync" из переменной "ВременнаяБаза" + И Я добавляю параметр "sync" для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Для синхронизации используется база" + И Вывод команды "gitsync" содержит "Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + +Сценарий: Клонирование репозитория гит и наполнение его служебными данными + Допустим Я создаю временный каталог и сохраняю его в переменной "URLРепозитория" + И Я инициализирую bare репозиторий в каталоге из переменной "URLРепозитория" + И Я наполняю bare репозиторий из переменной "URLРепозитория" тестовыми данными + И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "--ib-connection" для команды "gitsync" из переменной "ВременнаяБаза" + И Я добавляю параметр "clone" для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "URLРепозитория" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Клонирование завершено" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + И В каталоге из переменной "ПутьКаталогаИсходников" создается файл или каталог "AUTHORS" + И В каталоге из переменной "ПутьКаталогаИсходников" создается файл или каталог "VERSION" + +Сценарий: Инициализация каталога исходников в пустом каталоге внутри git-репозитория + Допустим Я инициализирую пустой репозиторий в каталог из переменной "ПутьКаталогаИсходников" + И Я создаю каталог src временный в каталоге из переменной "ПутьКаталогаИсходников" и сохраняю его в контекст в переменной "КаталогSRC" + И Я добавляю параметр "--ib-connection" для команды "gitsync" из переменной "ВременнаяБаза" + И Я добавляю параметр "init" для команды "gitsync" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" + И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогSRC" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "Инициализация завершена" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + И В каталоге из переменной "КаталогSRC" создается файл или каталог "AUTHORS" + И В каталоге из переменной "КаталогSRC" создается файл или каталог "VERSION" + И В каталоге из переменной "КаталогSRC" не создается файл или каталог ".git" \ No newline at end of file diff --git a/features/cmd/step_definitions/all.os b/features/cmd/step_definitions/all.os new file mode 100644 index 00000000..5daace23 --- /dev/null +++ b/features/cmd/step_definitions/all.os @@ -0,0 +1,148 @@ +#Использовать tempfiles +#Использовать yaml + +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной"); + ВсеШаги.Добавить("ЯЗаписываюВФайлVersionВКаталогеИзПеременной"); + ВсеШаги.Добавить("ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную"); + ВсеШаги.Добавить("ЯДобавляюПараметр__Параметрдлятаблицы____Параметрстрока__Gitsync"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + +КонецПроцедуры + + + +//Я создаю тестовой файл AUTHORS в каталоге из переменной "ПутьКаталогаИсходников_1" +Процедура ЯСоздаюТестовойФайлAuthorsВКаталогеИзПеременной(Знач ИмяПеременной) Экспорт + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной); + ФайлАвторов = Новый ЗаписьТекста; + ФайлАвторов.Открыть(ОбъединитьПути(ПутьКаталогаИсходников, "AUTHORS"), "utf-8"); + ФайлАвторов.ЗаписатьСтроку("Администратор=Администратор "); + ФайлАвторов.ЗаписатьСтроку("Отладка=Отладка "); + ФайлАвторов.Закрыть(); +КонецПроцедуры + +//Я записываю "0" в файл VERSION в каталоге из переменной "ПутьКаталогаИсходников_1" +Процедура ЯЗаписываюВФайлVersionВКаталогеИзПеременной(Знач НомерВерсии, Знач ИмяПеременной) Экспорт + + ПутьКаталогаИсходников = БДД.ПолучитьИзКонтекста(ИмяПеременной); + + ПутьКФайлуВерсий = ОбъединитьПути(ПутьКаталогаИсходников,"VERSION"); + Попытка + Запись = Новый ЗаписьТекста(ПутьКФайлуВерсий, "utf-8"); + Запись.ЗаписатьСтроку(""); + Запись.ЗаписатьСтроку("" + НомерВерсии + ""); + Запись.Закрыть(); + Исключение + Если Запись <> Неопределено Тогда + ОсвободитьОбъект(Запись); + КонецЕсли; + ВызватьИсключение; + КонецПопытки; +КонецПроцедуры + +//Я создаю файл настройки из файла и сохраняю в переменную "FILE" +Процедура ЯСоздаюФайлНастройкиИзФайлаИСохраняюВПеременную(Знач ПутьКФайлу, Знач ИмяПеременной) Экспорт + + + ПутьКаталогаИсходников_1 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_1"); + КаталогХранилища1С_1 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_1"); + + ПутьКаталогаИсходников_2 = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходников_2"); + КаталогХранилища1С_2 = БДД.ПолучитьИзКонтекста("КаталогХранилища1С_2"); + + ПутьКаталогаИсходниковРасширения = БДД.ПолучитьИзКонтекста("ПутьКаталогаИсходниковРасширения"); + КаталогХранилищаРасширения = БДД.ПолучитьИзКонтекста("КаталогХранилищаРасширения"); + + + ЧтениеТекста = Новый ЧтениеТекста(); + ЧтениеТекста.Открыть(ПутьКФайлу, КодировкаТекста.UTF8); + ТекстYaml = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + + ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_1>", ПутьКаталогаИсходников_1); + ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_1>", КаталогХранилища1С_1); + + ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходников_2>", ПутьКаталогаИсходников_2); + ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилища1С_2>", КаталогХранилища1С_2); + + ТекстYaml = СтрЗаменить(ТекстYaml, "<ПутьКаталогаИсходниковРасширения>", ПутьКаталогаИсходниковРасширения); + ТекстYaml = СтрЗаменить(ТекстYaml, "<КаталогХранилищаРасширения>", КаталогХранилищаРасширения); + + ВременныйФайл = ВременныеФайлы.СоздатьФайл(".yaml"); + + ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл); + ЗаписьТекста.Записать(ТекстYaml); + ЗаписьТекста.Закрыть(); + + + ЧтениеТекста = Новый ЧтениеТекста(); + ЧтениеТекста.Открыть(ВременныйФайл, КодировкаТекста.UTF8); + ТекстYaml = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + + ПарсерYAml = Новый ПарсерYaml(); + Результа = ПарсерYAml.ПрочитатьYaml(ТекстYaml); + + ТекстJson = ОБъектВJson(Результа); + + ВременныйФайл = ВременныеФайлы.СоздатьФайл(".json"); + ЗаписьТекста = Новый ЗаписьТекста(ВременныйФайл); + ЗаписьТекста.Записать(ТекстJson); + ЗаписьТекста.Закрыть(); + + БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйФайл); + +КонецПроцедуры + + +Функция ОБъектВJson(Знач Объект, ПараметрыЗаписи = Неопределено) Экспорт + + Если ПараметрыЗаписи = Неопределено Тогда + ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", ,,,,,, Истина); + КонецЕсли; + + ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); + ЗаписатьJSON(ЗаписьJSON, Объект); + + Возврат ЗаписьJSON.Закрыть(); + +КонецФункции + +Функция ОбъектИзJson(ТекстJSON, ЧитатьВСтруктуру = Ложь, ФорматДаты = Неопределено) Экспорт + + Если ФорматДаты = Неопределено Тогда + ФорматДаты = ФорматДатыJSON.ISO; + КонецЕсли; + ЧтениеJSON = Новый ЧтениеJSON; + ЧтениеJSON.УстановитьСтроку(ТекстJSON); + + Объект = ПрочитатьJSON(ЧтениеJSON, + НЕ ЧитатьВСтруктуру,, + ФорматДаты); + ЧтениеJSON.Закрыть(); + Возврат Объект; + +КонецФункции diff --git a/features/cmd/step_definitions/clone.os b/features/cmd/step_definitions/clone.os index ed02201e..dde5cd7e 100644 --- a/features/cmd/step_definitions/clone.os +++ b/features/cmd/step_definitions/clone.os @@ -2,7 +2,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -19,14 +19,13 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры @@ -36,7 +35,7 @@ ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); URLРепозитория = БДД.ПолучитьИзКонтекста(ПеременнаяURLРепозитория); - ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); ГитРепозиторий.Инициализировать(); @@ -62,7 +61,7 @@ ГитРепозиторий.Отправить(); - ЛокальныеВременныеФайлы.БезопасноУдалитьФайл(ВременныйКаталог); + ВременныеФайлы.БезопасноУдалитьФайл(ВременныйКаталог); КонецПроцедуры diff --git a/features/cmd/step_definitions/extention.os b/features/cmd/step_definitions/extention.os new file mode 100644 index 00000000..6a1811fc --- /dev/null +++ b/features/cmd/step_definitions/extention.os @@ -0,0 +1,54 @@ +#Использовать fs + +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd + + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯСкопировалКаталогТестовогоХранилищаКонфигурацииРасширенияВКаталогИзПеременной"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + + +КонецПроцедуры + + +//я скопировал каталог тестового хранилища конфигурации расширения в каталог из переменной "КаталогХранилища1С" +Процедура ЯСкопировалКаталогТестовогоХранилищаКонфигурацииРасширенияВКаталогИзПеременной(Знач ИмяПеременной) Экспорт + КаталогХранилища1С = БДД.ПолучитьИзКонтекста(ИмяПеременной); + ФС.КопироватьСодержимоеКаталога(ПутьКВременномуФайлуХранилища1С(), КаталогХранилища1С); + // КопироватьФайл(ПутьКВременномуФайлуХранилища1С(), ОбъединитьПути(КаталогХранилища1С, "1cv8ddb.1CD")); +КонецПроцедуры + +Функция ПутьКВременномуФайлуХранилища1С() + + Возврат ОбъединитьПути(КаталогFixtures(), "extension_storage"); + +КонецФункции + +Функция КаталогFixtures() + Возврат ОбъединитьПути(КаталогГитсинк(), "tests", "fixtures"); +КонецФункции + +Функция КаталогГитсинк() + Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", ".."); +КонецФункции diff --git a/features/cmd/step_definitions/ibconnection.os b/features/cmd/step_definitions/ibconnection.os new file mode 100644 index 00000000..d1bd8d0e --- /dev/null +++ b/features/cmd/step_definitions/ibconnection.os @@ -0,0 +1,47 @@ +#Использовать v8runner +#Использовать tempfiles + +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + + +Перем БДД; //контекст фреймворка 1bdd + + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯСоздаюВременнуюБазуИСохраняюВПеременную"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + + + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + +КонецПроцедуры + + +//Я создаю временную базу и сохраняю в переменную "ВременнаяБаза" +Процедура ЯСоздаюВременнуюБазуИСохраняюВПеременную(Знач ИмяПеременной) Экспорт + + ПутьКВременнойБазе = ВременныеФайлы.СоздатьКаталог(); + + УправлениеКонфигуратором = Новый УправлениеКонфигуратором; + УправлениеКонфигуратором.СоздатьФайловуюБазу(ПутьКВременнойБазе); + + БДД.СохранитьВКонтекст(ИмяПеременной, СтрШаблон("/F%1",ПутьКВременнойБазе)); + +КонецПроцедуры diff --git a/features/cmd/step_definitions/init.os b/features/cmd/step_definitions/init.os index 4ae473fb..153fea24 100644 --- a/features/cmd/step_definitions/init.os +++ b/features/cmd/step_definitions/init.os @@ -2,7 +2,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт БДД = КонтекстФреймворкаBDD; @@ -20,13 +20,13 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры //Я инициализирую пустой репозиторий в каталог из переменной "ПутьКаталогаИсходников" diff --git a/features/cmd/step_definitions/shared.os b/features/cmd/step_definitions/shared.os index 42af4ccd..30784c14 100644 --- a/features/cmd/step_definitions/shared.os +++ b/features/cmd/step_definitions/shared.os @@ -6,7 +6,7 @@ #Использовать "../../../src/core" Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + Перем Лог; // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -53,13 +53,13 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры //я устанавливаю в контексте признак статистики скриптов OneScript @@ -104,7 +104,7 @@ //Я устанавливаю рабочей каталог во временный каталог Процедура ЯУстанавливаюРабочейКаталогВоВременныйКаталог() Экспорт - УстановитьТекущийКаталог(ЛокальныеВременныеФайлы.СоздатьКаталог()); + УстановитьТекущийКаталог(ВременныеФайлы.СоздатьКаталог()); КонецПроцедуры //Я создаю новый объект ГитРепозиторий @@ -193,7 +193,13 @@ Процедура ЯДобавляюПараметрДляКомандыИзПеременной(Знач Параметр, Знач ИмяКоманды, Знач ИмяПеременной) Экспорт Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); ЗначениеПеременной = БДД.ПолучитьИзКонтекста(ИмяПеременной); + + Если СтрНайти(ЗначениеПеременной, " ") Тогда + ЗначениеПеременной = ОбернутьВКавычки(ЗначениеПеременной); + КонецЕсли; + Команда.ДобавитьПараметр(СтрШаблон("%1 %2", Параметр, ЗначениеПеременной)); + КонецПроцедуры //Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке @@ -214,8 +220,7 @@ Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); Если НЕ ЭтоExe Тогда - ПодготовитьПриложениеКТестированию(КаталогГитсинк()); - + Команда.УстановитьКоманду("oscript"); Команда.ДобавитьПараметр("-encoding=utf-8"); @@ -365,40 +370,7 @@ Возврат "Команда-" + ИмяКоманды; КонецФункции -Процедура ПодготовитьПриложениеКТестированию(Знач РабочийКаталог) Экспорт - - Лог.Отладка("Установка локальных зависимостей библиотек"); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(РабочийКаталог); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install -l"); - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - Лог.Отладка("Настройка локальных библиотек"); - - ПутьКФайлуЗагрузчику = ОбъединитьПути(РабочийКаталог, "oscript_modules", "package-loader.os"); - ШаблонныйФайлЗагрузчик = ОбъединитьПути(РабочийКаталог, "templates", "package-loader.os"); - ФайлЗагрузчик = Новый Файл(ПутьКФайлуЗагрузчику); - Если Не ФайлЗагрузчик.Существует() Тогда - КопироватьФайл(ШаблонныйФайлЗагрузчик, ПутьКФайлуЗагрузчику); - Лог.Информация("Добавлен файл загрузки локальных библиотек"); - КонецЕсли; - - ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); - ШаблонныйФайлНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "templates", "oscript.cfg"); - ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); - Если Не ФайлНастройкиСкрипта.Существует() Тогда - КопироватьФайл(ШаблонныйФайлНастройкиСкрипта, ПутьКФайлуНастройкиСкрипта); - Лог.Информация("Добавлен файл настройки запуска"); - КонецЕсли; - -КонецПроцедуры -ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; Лог = Логирование.ПолучитьЛог(ИмяЛога()); \ No newline at end of file diff --git a/features/cmd/step_definitions/sync.core.os b/features/cmd/step_definitions/sync.core.os index e0327d2a..2951866e 100644 --- a/features/cmd/step_definitions/sync.core.os +++ b/features/cmd/step_definitions/sync.core.os @@ -4,7 +4,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт БДД = КонтекстФреймворкаBDD; @@ -12,7 +12,7 @@ ВсеШаги = Новый Массив; ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной"); - ВсеШаги.Добавить("ЯСоздаюНовыйУправлениеплагинами"); + ВсеШаги.Добавить("ЯСоздаюНовыйМенеджерПлагинов"); ВсеШаги.Добавить("ЯСобираюТестовыйПлагинИСохраняюВКонтекст"); ВсеШаги.Добавить("ЯУстанавливаюФайлПлагинаИзПеременной"); ВсеШаги.Добавить("ЯЗагружаюПлагиныИзКаталогаВПеременной"); @@ -26,19 +26,19 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры //Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов" Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной(Знач ИмяПеременной) Экспорт - ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйКаталог); @@ -47,7 +47,7 @@ //Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина" Процедура ЯСобираюТестовыйПлагинИСохраняюВКонтекст(Знач ИмяПеременной) Экспорт - ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); ФС.КопироватьСодержимоеКаталога(КаталогТестовогоПлагина(), ВременныйКаталог); @@ -77,32 +77,32 @@ КонецПроцедуры -//Я создаю новый УправлениеПлагинами -Процедура ЯСоздаюНовыйУправлениеплагинами() Экспорт - УправлениеПлагинами = Новый УправлениеПлагинами; +//Я создаю новый МенеджерПлагинов +Процедура ЯСоздаюНовыйМенеджерПлагинов() Экспорт + МенеджерПлагинов = Новый МенеджерПлагинов; - БДД.СохранитьВКонтекст("УправлениеПлагинами", УправлениеПлагинами); + БДД.СохранитьВКонтекст("МенеджерПлагинов", МенеджерПлагинов); КонецПроцедуры //Я загружаю плагины из каталога в переменной "КаталогПлагинов" Процедура ЯЗагружаюПлагиныИзКаталогаВПеременной(Знач ИмяПеременнойКаталога) Экспорт - УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + МенеджерПлагинов = БДД.ПолучитьИзКонтекста("МенеджерПлагинов"); КаталогПлагинов = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталога); - УправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); - УправлениеПлагинами.ЗагрузитьПлагины(); + МенеджерПлагинов.УстановитьКаталогПлагинов(КаталогПлагинов); + МенеджерПлагинов.ЗагрузитьПлагины(); - УправлениеПлагинами.ВключитьПлагин("test_plugin"); + МенеджерПлагинов.ВключитьПлагин("test_plugin"); КонецПроцедуры //Я подключаю плагины в МенеджерСинхронизации Процедура ЯПодключаюПлагиныВМенеджерсинхронизации() Экспорт - УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + МенеджерПлагинов = БДД.ПолучитьИзКонтекста("МенеджерПлагинов"); - ИндексПлагинов = УправлениеПлагинами.ПолучитьИндексПлагинов(); + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации"); МенеджерСинхронизации.ПодпискиНаСобытия(ИндексПлагинов); @@ -115,9 +115,9 @@ КаталогПлагинов = БДД.ПолучитьИзКонтекста("КаталогПлагинов"); ФайлПлагина = БДД.ПолучитьИзКонтекста(ПутьКФайлуПлагина); - УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); - УправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); - УправлениеПлагинами.УстановитьФайлПлагин(ФайлПлагина); + МенеджерПлагинов = БДД.ПолучитьИзКонтекста("МенеджерПлагинов"); + МенеджерПлагинов.УстановитьКаталогПлагинов(КаталогПлагинов); + МенеджерПлагинов.УстановитьФайлПлагин(ФайлПлагина); КонецПроцедуры @@ -126,4 +126,4 @@ Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "testsata", "test_plugin"); КонецФункции -ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + diff --git a/features/cmd/step_definitions/sync.os b/features/cmd/step_definitions/sync.os index 3a99892e..1aa3b993 100644 --- a/features/cmd/step_definitions/sync.os +++ b/features/cmd/step_definitions/sync.os @@ -1,7 +1,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -17,12 +17,12 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры diff --git "a/features/cmd/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" "b/features/cmd/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" index 32280b51..9f99d014 100644 --- "a/features/cmd/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" +++ "b/features/cmd/step_definitions/testsata/test_plugin/src/\320\232\320\273\320\260\321\201\321\201\321\213/testPlugin.os" @@ -116,7 +116,7 @@ // ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации // СтандартнаяОбработка - Булево - признак отказ от обработки по умолчанию // -Процедура ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, СтандартнаяОбработка) Экспорт +Процедура ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, ТекущаяВерсия, СтандартнаяОбработка) Экспорт Лог.Информация("Вызвано событие <ПриПолученииТаблицыВерсий> для плагина <%1>", Имя()); diff --git a/features/cmd/step_definitions/v8path.os b/features/cmd/step_definitions/v8path.os new file mode 100644 index 00000000..3d675627 --- /dev/null +++ b/features/cmd/step_definitions/v8path.os @@ -0,0 +1,45 @@ +#Использовать v8find +// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd + +Перем БДД; //контекст фреймворка 1bdd + +// Метод выдает список шагов, реализованных в данном файле-шагов +Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт + БДД = КонтекстФреймворкаBDD; + + ВсеШаги = Новый Массив; + + ВсеШаги.Добавить("ЯИщюПлатформуИСохранюНайденныйПуть"); + + Возврат ВсеШаги; +КонецФункции + +// Реализация шагов + +// Процедура выполняется перед запуском каждого сценария +Процедура ПередЗапускомСценария(Знач Узел) Экспорт + +КонецПроцедуры + +// Процедура выполняется после завершения каждого сценария +Процедура ПослеЗапускаСценария(Знач Узел) Экспорт + +КонецПроцедуры + + +//Я ищю платформу и сохраню найденный путь "ПутьКПлатформе1С" +Процедура ЯИщюПлатформуИСохранюНайденныйПуть(Знач ИмяПеременной) Экспорт + + ПутьКПлатформе1С = Платформа1С.ПутьКПредприятию("8.3"); + + Если Не ЗначениеЗаполнено(ПутьКПлатформе1С) Тогда + ВызватьИсключение "Не найден путь к платформе 1С"; + КонецЕсли; + + БДД.СохранитьВКонтекст(ИмяПеременной, ПутьКПлатформе1С); + +КонецПроцедуры + +Функция ОбернутьВКавычки(Знач Строка); + Возврат """" + Строка + """"; +КонецФункции \ No newline at end of file diff --git a/features/cmd/v8path.feature b/features/cmd/v8path.feature index 14870025..67eb83c3 100644 --- a/features/cmd/v8path.feature +++ b/features/cmd/v8path.feature @@ -13,19 +13,20 @@ И я скопировал каталог тестового хранилища конфигурации в каталог из переменной "КаталогХранилища1С" И Я создаю временный каталог и сохраняю его в переменной "ПутьКаталогаИсходников" И Я инициализирую репозиторий в каталоге из переменной "ПутьКаталогаИсходников" + И Я ищю платформу и сохраню найденный путь "ПутьКПлатформе1С" И Я создаю тестовой файл AUTHORS И Я записываю "0" в файл VERSION Сценарий: Простая синхронизация хранилища с git-репозиторием Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" - И Я добавляю параметр "--v8-path /opt/1C/v8.3/i386/1cv8" для команды "gitsync" + И Я добавляю параметр "--v8-path" для команды "gitsync" из переменной "ПутьКПлатформе1С" И Я добавляю параметр "-v" для команды "gitsync" И Я добавляю параметр "sync" для команды "gitsync" И Я добавляю позиционный параметр для команды "gitsync" из переменной "КаталогХранилища1С" И Я добавляю позиционный параметр для команды "gitsync" из переменной "ПутьКаталогаИсходников" Когда Я выполняю команду "gitsync" - Тогда Вывод команды "gitsync" содержит "ОТЛАДКА - Используется путь к платформе 1С " + Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Используется путь к платформе 1С" И Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" И Вывод команды "gitsync" не содержит "Внешнее исключение" И Код возврата команды "gitsync" равен 0 \ No newline at end of file diff --git a/features/core/step_definitions/clone.os b/features/core/step_definitions/clone.os index ed02201e..1503098b 100644 --- a/features/core/step_definitions/clone.os +++ b/features/core/step_definitions/clone.os @@ -2,7 +2,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -20,13 +20,13 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры @@ -36,7 +36,7 @@ ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); URLРепозитория = БДД.ПолучитьИзКонтекста(ПеременнаяURLРепозитория); - ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); ГитРепозиторий.УстановитьРабочийКаталог(ВременныйКаталог); ГитРепозиторий.Инициализировать(); @@ -62,7 +62,7 @@ ГитРепозиторий.Отправить(); - ЛокальныеВременныеФайлы.БезопасноУдалитьФайл(ВременныйКаталог); + ВременныеФайлы.БезопасноУдалитьФайл(ВременныйКаталог); КонецПроцедуры diff --git a/features/core/step_definitions/init.os b/features/core/step_definitions/init.os index 4ae473fb..153fea24 100644 --- a/features/core/step_definitions/init.os +++ b/features/core/step_definitions/init.os @@ -2,7 +2,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт БДД = КонтекстФреймворкаBDD; @@ -20,13 +20,13 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры //Я инициализирую пустой репозиторий в каталог из переменной "ПутьКаталогаИсходников" diff --git a/features/core/step_definitions/shared.os b/features/core/step_definitions/shared.os index d5ada6ff..21cbc2e4 100644 --- a/features/core/step_definitions/shared.os +++ b/features/core/step_definitions/shared.os @@ -6,7 +6,7 @@ #Использовать "../../../src/core" Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + Перем Лог; // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -53,13 +53,13 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры //я устанавливаю в контексте признак статистики скриптов OneScript @@ -104,7 +104,7 @@ //Я устанавливаю рабочей каталог во временный каталог Процедура ЯУстанавливаюРабочейКаталогВоВременныйКаталог() Экспорт - УстановитьТекущийКаталог(ЛокальныеВременныеФайлы.СоздатьКаталог()); + УстановитьТекущийКаталог(ВременныеФайлы.СоздатьКаталог()); КонецПроцедуры //Я создаю новый объект ГитРепозиторий @@ -199,7 +199,6 @@ //Я устанавливаю путь выполнения команды "gitsync" к текущей библиотеке Процедура ЯУстанавливаюПутьВыполненияКомандыКТекущейБиблиотеке(Знач ИмяКоманды) Экспорт - ПодготовитьПриложениеКТестированию(КаталогГитсинк()); ПутьГитсинк = ОбъединитьПути(КаталогГитсинк(), "src", "cmd", "gitsync.os"); Команда = БДД.ПолучитьИзКонтекста(КлючКоманды(ИмяКоманды)); @@ -344,41 +343,7 @@ Возврат "Команда-" + ИмяКоманды; КонецФункции -Процедура ПодготовитьПриложениеКТестированию(Знач РабочийКаталог) Экспорт - - Лог.Отладка("Установка локальных зависимостей библиотек"); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(РабочийКаталог); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install -l"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - Лог.Отладка("Настройка локальных библиотек"); - - ПутьКФайлуЗагрузчику = ОбъединитьПути(РабочийКаталог, "oscript_modules", "package-loader.os"); - ШаблонныйФайлЗагрузчик = ОбъединитьПути(РабочийКаталог, "templates", "package-loader.os"); - ФайлЗагрузчик = Новый Файл(ПутьКФайлуЗагрузчику); - Если Не ФайлЗагрузчик.Существует() Тогда - КопироватьФайл(ШаблонныйФайлЗагрузчик, ПутьКФайлуЗагрузчику); - Лог.Информация("Добавлен файл загрузки локальных библиотек"); - КонецЕсли; - - ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); - ШаблонныйФайлНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "templates", "oscript.cfg"); - ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); - Если Не ФайлНастройкиСкрипта.Существует() Тогда - КопироватьФайл(ШаблонныйФайлНастройкиСкрипта, ПутьКФайлуНастройкиСкрипта); - Лог.Информация("Добавлен файл настройки запуска"); - КонецЕсли; - -КонецПроцедуры -ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; Лог = Логирование.ПолучитьЛог(ИмяЛога()); //Лог.УстановитьУровень(Логирование.ПолучитьЛог("bdd").Уровень()); diff --git a/features/core/step_definitions/sync.batch.os b/features/core/step_definitions/sync.batch.os index e19cfa00..089d86c5 100644 --- a/features/core/step_definitions/sync.batch.os +++ b/features/core/step_definitions/sync.batch.os @@ -31,7 +31,7 @@ // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ВременныеФайлы.Удалить(); + КонецПроцедуры diff --git a/features/core/step_definitions/sync.core.os b/features/core/step_definitions/sync.core.os index fd9f3663..40b7e976 100644 --- a/features/core/step_definitions/sync.core.os +++ b/features/core/step_definitions/sync.core.os @@ -4,7 +4,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт БДД = КонтекстФреймворкаBDD; @@ -12,7 +12,7 @@ ВсеШаги = Новый Массив; ВсеШаги.Добавить("ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной"); - ВсеШаги.Добавить("ЯСоздаюНовыйУправлениеплагинами"); + ВсеШаги.Добавить("ЯСоздаюНовыйМенеджерПлагинов"); ВсеШаги.Добавить("ЯСобираюТестовыйПлагинИСохраняюВКонтекст"); ВсеШаги.Добавить("ЯУстанавливаюФайлПлагинаИзПеременной"); ВсеШаги.Добавить("ЯЗагружаюПлагиныИзКаталогаВПеременной"); @@ -26,19 +26,19 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры //Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов" Процедура ЯСоздаюВременныйКаталогИСохраняюЕгоВПеременной(Знач ИмяПеременной) Экспорт - ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); БДД.СохранитьВКонтекст(ИмяПеременной, ВременныйКаталог); @@ -47,7 +47,7 @@ //Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина" Процедура ЯСобираюТестовыйПлагинИСохраняюВКонтекст(Знач ИмяПеременной) Экспорт - ВременныйКаталог = ЛокальныеВременныеФайлы.СоздатьКаталог(); + ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); ФС.КопироватьСодержимоеКаталога(КаталогТестовогоПлагина(), ВременныйКаталог); @@ -78,32 +78,32 @@ КонецПроцедуры -//Я создаю новый УправлениеПлагинами -Процедура ЯСоздаюНовыйУправлениеплагинами() Экспорт - УправлениеПлагинами = Новый УправлениеПлагинами; +//Я создаю новый МенеджерПлагинов +Процедура ЯСоздаюНовыйМенеджерПлагинов() Экспорт + МенеджерПлагинов = Новый МенеджерПлагинов; - БДД.СохранитьВКонтекст("УправлениеПлагинами", УправлениеПлагинами); + БДД.СохранитьВКонтекст("МенеджерПлагинов", МенеджерПлагинов); КонецПроцедуры //Я загружаю плагины из каталога в переменной "КаталогПлагинов" Процедура ЯЗагружаюПлагиныИзКаталогаВПеременной(Знач ИмяПеременнойКаталога) Экспорт - УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + МенеджерПлагинов = БДД.ПолучитьИзКонтекста("МенеджерПлагинов"); КаталогПлагинов = БДД.ПолучитьИзКонтекста(ИмяПеременнойКаталога); - УправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); - УправлениеПлагинами.ЗагрузитьПлагины(); + МенеджерПлагинов.УстановитьКаталогПлагинов(КаталогПлагинов); + МенеджерПлагинов.ЗагрузитьПлагины(); - УправлениеПлагинами.ВключитьПлагин("test_plugin"); + МенеджерПлагинов.ВключитьПлагин("test_plugin"); КонецПроцедуры //Я подключаю плагины в МенеджерСинхронизации Процедура ЯПодключаюПлагиныВМенеджерсинхронизации() Экспорт - УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); + МенеджерПлагинов = БДД.ПолучитьИзКонтекста("МенеджерПлагинов"); - ИндексПлагинов = УправлениеПлагинами.ПолучитьИндексПлагинов(); + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); МенеджерСинхронизации = БДД.ПолучитьИзКонтекста("МенеджерСинхронизации"); МенеджерСинхронизации.ПодпискиНаСобытия(ИндексПлагинов); @@ -116,9 +116,9 @@ КаталогПлагинов = БДД.ПолучитьИзКонтекста("КаталогПлагинов"); ФайлПлагина = БДД.ПолучитьИзКонтекста(ПутьКФайлуПлагина); - УправлениеПлагинами = БДД.ПолучитьИзКонтекста("УправлениеПлагинами"); - УправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); - УправлениеПлагинами.УстановитьФайлПлагин(ФайлПлагина); + МенеджерПлагинов = БДД.ПолучитьИзКонтекста("МенеджерПлагинов"); + МенеджерПлагинов.УстановитьКаталогПлагинов(КаталогПлагинов); + МенеджерПлагинов.УстановитьФайлПлагин(ФайлПлагина); КонецПроцедуры @@ -127,4 +127,4 @@ Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "testsata", "test_plugin"); КонецФункции -ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + diff --git a/features/core/step_definitions/sync.os b/features/core/step_definitions/sync.os index 3a99892e..1aa3b993 100644 --- a/features/core/step_definitions/sync.os +++ b/features/core/step_definitions/sync.os @@ -1,7 +1,7 @@ // Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd Перем БДД; //контекст фреймворка 1bdd -Перем ЛокальныеВременныеФайлы; + // Метод выдает список шагов, реализованных в данном файле-шагов Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт @@ -17,12 +17,12 @@ // Процедура выполняется перед запуском каждого сценария Процедура ПередЗапускомСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы = Новый МенеджерВременныхФайлов; + КонецПроцедуры // Процедура выполняется после завершения каждого сценария Процедура ПослеЗапускаСценария(Знач Узел) Экспорт - ЛокальныеВременныеФайлы.Удалить(); + КонецПроцедуры diff --git a/features/core/sync.batch.feature b/features/core/sync.batch.feature index 7e4bd981..ee5f703b 100644 --- a/features/core/sync.batch.feature +++ b/features/core/sync.batch.feature @@ -91,7 +91,7 @@ repositories: # Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем "" # И Я устанавливаю версию платформы "8.3" # И Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов" -# И Я создаю новый УправлениеПлагинами +# И Я создаю новый МенеджерПлагинов # И Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина" # И Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина" # И Я загружаю плагины из каталога в переменной "КаталогПлагинов" diff --git a/features/core/sync.core.feature b/features/core/sync.core.feature index d2b1deb9..c2546b2f 100644 --- a/features/core/sync.core.feature +++ b/features/core/sync.core.feature @@ -27,7 +27,7 @@ Допустим Я устанавливаю авторизацию в хранилище пользователя "Администратор" с паролем "" И Я устанавливаю версию платформы "8.3" И Я создаю временный каталог и сохраняю его в переменной "КаталогПлагинов" - И Я создаю новый УправлениеПлагинами + И Я создаю новый МенеджерПлагинов И Я собираю тестовый плагин и сохраняю в контекст "ПутьКФайлуПлагина" И Я устанавливаю файл плагина из переменной "ПутьКФайлуПлагина" И Я загружаю плагины из каталога в переменной "КаталогПлагинов" diff --git a/package-loader.os b/package-loader.os deleted file mode 100644 index d9e4f5b4..00000000 --- a/package-loader.os +++ /dev/null @@ -1,8 +0,0 @@ - -#Использовать "src/core" - -Процедура ПриЗагрузкеБиблиотеки(Путь, СтандартнаяОбработка, Отказ) - - СтандартнаяОбработка = Ложь; - -КонецПроцедуры diff --git a/packagedef b/packagedef index 2ac7b97f..ba2eac7b 100644 --- a/packagedef +++ b/packagedef @@ -1,101 +1,28 @@ -#Использовать logos -#Использовать fs -Перем Лог; - -Процедура ПередСборкой(Знач РабочийКаталог) Экспорт - - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); - - Лог.Информация("Установка локальных зависимостей библиотек"); - КомандаOpm = Новый Команда; - - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install -l"); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - Лог.Информация("Настройка локальных библиотек"); - - ПутьКФайлуЗагрузчику = ОбъединитьПути(РабочийКаталог, "oscript_modules", "package-loader.os"); - ШаблонныйФайлЗагрузчик = ОбъединитьПути(РабочийКаталог, "templates", "package-loader.os"); - ФайлЗагрузчик = Новый Файл(ПутьКФайлуЗагрузчику); - Если Не ФайлЗагрузчик.Существует() Тогда - КопироватьФайл(ШаблонныйФайлЗагрузчик, ПутьКФайлуЗагрузчику); - Лог.Информация("Добавлен файл загрузки локальных библиотек"); - КонецЕсли; - - ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); - ШаблонныйФайлНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "templates", "oscript.cfg"); - ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); - Если Не ФайлНастройкиСкрипта.Существует() Тогда - КопироватьФайл(ШаблонныйФайлНастройкиСкрипта, ПутьКФайлуНастройкиСкрипта); - Лог.Информация("Добавлен файл настройки запуска"); - КонецЕсли; - - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "embedded_plugins")); - - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("run get-plugins"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - Лог.Информация("Настройка локальных библиотек - завершена"); - -КонецПроцедуры - -Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт - - ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); - ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); - Если ФайлНастройкиСкрипта.Существует() Тогда - УдалитьФайлы(ПутьКФайлуНастройкиСкрипта); - КонецЕсли; - - ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); - -КонецПроцедуры - -Лог = Логирование.ПолучитьЛог("task.build"); - -ПутьКСценариюПараметров = ОбъединитьПути(ТекущийСценарий().Каталог, "src/cmd", "Модули", "ПараметрыПриложения.os"); -ПараметрыСистемы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюПараметров); -ИмяПродукта = НРег(ПараметрыСистемы_ЛокальнаяВерсия.ИмяПриложения()); -ВерсияПродукта = ПараметрыСистемы_ЛокальнаяВерсия.Версия(); - -Описание.Имя(ИмяПродукта) - .Версия(ВерсияПродукта) - .ВерсияСреды("1.0.20") +Описание.Имя("gitsync") + .Версия("3.0.0-rc.2") + .ВерсияСреды("1.0.21") .ЗависитОт("logos", "1.2.0") .ЗависитОт("tempfiles", "0.2.2") - .ЗависитОт("v8runner", "1.1.3") + .ЗависитОт("v8runner", "1.3.0") .ЗависитОт("gitrunner", "1.2.0") .ЗависитОт("strings", "0.4.1") .ЗависитОт("1commands", "1.3.4") .ЗависитОт("json", "1.0.1") .ЗависитОт("fs", "0.4.1") .ЗависитОт("delegate", "0.2.0") - .ЗависитОт("v8storage", "0.7.0") + .ЗависитОт("v8storage", "0.8.0") .ЗависитОт("reflector", "0.4.0") .ЗависитОт("opm", "0.15.3") .ЗависитОт("cli", "0.9.10") - .ЗависитОт("configor", "0.5.3") + .ЗависитОт("configor", "0.6.3") .ВключитьФайл("src") .ВключитьФайл("docs") .ВключитьФайл("embedded_plugins") .ВключитьФайл("oscript_modules") .ВключитьФайл("readme.md") .ВключитьФайл("templates/temp.cfe") + .ОпределяетКласс("МенеджерПлагинов", "src/core/Классы/МенеджерПлагинов.os") .ОпределяетКласс("МенеджерСинхронизации", "src/core/Классы/МенеджерСинхронизации.os") - .ОпределяетКласс("УправлениеПлагинами", "src/core/Классы/УправлениеПлагинами.os") - .ИсполняемыйФайл("src/cmd/gitsync.os", ИмяПродукта); + .ОпределяетКласс("ПакетнаяСинхронизация", "src/core/Классы/ПакетнаяСинхронизация.os") + .ИсполняемыйФайл("src/cmd/gitsync.os"); diff --git a/readme.md b/readme.md index 646d0e12..e7b688d5 100644 --- a/readme.md +++ b/readme.md @@ -14,6 +14,7 @@ - [Установка](#установка) - [Вручную](#вручную) - [Через пакетный менеджер opm](#через-пакетный-менеджер-opm) +- [Требования](#требования) - [Особенности](#особенности) - [Отличия от `gitsync` версий 2.x](#отличия-от-gitsync-версий-2x) - [Описание функциональности](#описание-функциональности) @@ -70,9 +71,15 @@ $ opm install -f <ПутьКФайлу> 1. командой `opm install gitsync` 2. Запустить командой `gitsync` + +## Требования + +* утилита `ring` и `` - для работы с 1С старше версии > 8.3.11 + ## Особенности + ### Отличия от `gitsync` версий 2.x diff --git a/src/cmd/gitsync.os b/src/cmd/gitsync.os index 98a961a5..bc4e859d 100644 --- a/src/cmd/gitsync.os +++ b/src/cmd/gitsync.os @@ -27,19 +27,31 @@ Приложение.Опция("v verbose", Ложь, "вывод отладочной информация в процессе выполнении") .Флаговый() .ВОкружении("GITSYNC_VERBOSE"); - + + Приложение.Опция("U ib-user ib-usr", "", "пользователь информационной базы") + .ТСтрока() + .ВОкружении("GITSYNC_IB_USR GITSYNC_IB_USER"); + + Приложение.Опция("P ib-pwd", "", "пароль пользователя информационной базы") + .ТСтрока() + .ВОкружении("GITSYNC_IB_PASSWORD GITSYNC_IB_PWD"); + + Приложение.Опция("C ib-connection ibconnection", "", "путь подключения к информационной базе") + .ТСтрока() + .ВОкружении("GITSYNC_IB_CONNECTION GITSYNC_IBCONNECTION"); + // Приложение.Опция("p plugins", "", "плагины к загрузке и исполнению (дополнительное ограничение)") // .ТМассивСтрок() // .ВОкружении("GITSYNC_RUN_PLUGINS"); Приложение.Опция("t tempdir", "", "путь к каталогу временных файлов") - .ВОкружении("GITSYNC_TEMP"); + .ВОкружении("GITSYNC_TEMP GITSYNC_TEMPDIR"); Приложение.Опция("git-path", "", "путь к исполняемому файлу git") .ВОкружении("GITSYNC_GIT_PATH GIT_PATH"); Приложение.Опция("domain-email", "localhost", "домен почты для пользователей git") - .ВОкружении("GITSYNC_EMAIL"); + .ВОкружении("GITSYNC_EMAIL GITSYNC_DOMAIN_EMAIL"); Приложение.ДобавитьКоманду("usage u", "Выводит примеры использования", Новый КомандаUsage); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" index 05959f55..ae70b108 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260All.os" @@ -1,4 +1,5 @@ - +#Использовать configor + Перем Лог; Процедура ОписаниеКоманды(Команда) Экспорт @@ -7,10 +8,16 @@ .ТЧисло() .ВОкружении("GITSYNC_ALL_TIMER"); + Команда.Опция("thread", 1, "количество потоков выполнения") + .ТЧисло() + .ВОкружении("GITSYNC_ALL_THREAD"); + + Команда.Опция("n name", "", "имя настройки пакетной синхронизации") + .ТСтрока(); + Команда.Опция("u storage-user", "", "пользователь хранилища конфигурации") .ТСтрока() - .ВОкружении("GITSYNC_STORAGE_USER") - .ПоУмолчанию("Администратор"); + .ВОкружении("GITSYNC_STORAGE_USER"); Команда.Опция("p storage-pwd", "", "пароль пользователя хранилища конфигурации") .ТСтрока() @@ -34,32 +41,77 @@ ПользовательХранилища = Команда.ЗначениеОпции("storage-user"); ПарольПользователяХранилища = Команда.ЗначениеОпции("storage-pwd"); - + + ИмяНастройкиСинхронизации = Команда.ЗначениеОпции("name"); + КоличествоПотоковСинхронизации = Команда.ЗначениеОпции("thread"); + ИнтервалПовторенияСинхронизации = Команда.ЗначениеОпции("timer"); ФайлНастроек = Новый Файл(ПутьКФайлуНастроек); Если Не ФайлНастроек.Существует() Тогда - ВызватьИсключение Новый ИнформацияОбОшибке(СтрШаблон("Файл настроек <%1> не найден", ФайлНастроек.ПолноеИмя), "Работа приложения остановлена"); + ВызватьИсключение СтрШаблон("Файл настроек <%1> не найден", ФайлНастроек.ПолноеИмя); КонецЕсли; ОбщиеПараметры = ПараметрыПриложения.Параметры(); + ПараметрыФайлаНастроек = ПрочитатьФайлНастроек(ПутьКФайлуНастроек); + + Если ПараметрыФайлаНастроек.Количество() = 0 Тогда + ВызватьИсключение "Файл настроек не содержит данных"; + КонецЕсли; + ПакетнаяСинхронизация = Новый ПакетнаяСинхронизация(); - ПакетнаяСинхронизация.УстановитьНастройки(ФайлНастроек); - ПакетнаяСинхронизация.ТаймерПовторения(ИнтервалПовторенияСинхронизации) + ПакетнаяСинхронизация + .ТаймерПовторения(ИнтервалПовторенияСинхронизации) .КаталогПлагинов(ПараметрыПриложения.КаталогПлагинов()) - .ФайлВключенныхПлагинов(ПараметрыПриложения.ФайлВключенныхПлагинов()) .ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) - .УровеньЛога(ПараметрыПриложения.УровеньЛога()) - .РежимУдаленияВременныхФайлов(Истина) - .АвторизацияВХранилищеКонфигурации(ПользовательХранилища, ПарольПользователяХранилища); - - ПакетнаяСинхронизация.ВыполнитьСинхронизацию(); + .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) + .РежимУдаленияВременныхФайлов(Истина) + .АвторизацияВХранилищеКонфигурации(ПользовательХранилища, ПарольПользователяХранилища) + ; + + ПакетнаяСинхронизация.ПрочитатьНастройки(ПараметрыФайлаНастроек); + + Если ЗначениеЗаполнено(ИмяНастройкиСинхронизации) Тогда + ПакетнаяСинхронизация.ВыполнитьСинхронизациюПоНастройке(ИмяНастройкиСинхронизации); + Иначе + ПакетнаяСинхронизация.ВыполнитьСинхронизацию(КоличествоПотоковСинхронизации); + КонецЕсли; Лог.Информация("Завершено выполнение команды "); КонецПроцедуры +Функция ПрочитатьФайлНастроек(Знач ПутьКФайлуНастроек) + + Лог.Отладка("Чтение файла настроек начато"); + + ТекстФайла = РаботаСФайлами.ПрочитатьФайл(ПутьКФайлуНастроек); + + Лог.Отладка("Чтение файла настроек завершено"); + + ПрочитанныйПараметры = РаботаСФайлами.ОбъектИзJson(ТекстФайла); + + ЭтоОдинРепозиторий = ПрочитанныйПараметры.Получить("repositories") = Неопределено + И ПрочитанныйПараметры.Получить("Репозитории") = Неопределено; + + Параметры = ПрочитанныйПараметры; + + Если ЭтоОдинРепозиторий Тогда + + Параметры = Новый Соответствие(); + МассивРепозиториев = Новый Массив; + МассивРепозиториев.Добавить(ПрочитанныйПараметры); + + Параметры.Вставить("repositories", МассивРепозиториев); + + КонецЕсли; + + Возврат Параметры; + +КонецФункции + + Лог = ПараметрыПриложения.Лог(); \ No newline at end of file diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" index 3ebe9b56..312ceadb 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Clone.os" @@ -9,6 +9,10 @@ Команда.Опция("p storage-pwd", "", "пароль пользователя хранилища конфигурации") .ТСтрока() .ВОкружении("GITSYNC_STORAGE_PASSWORD GITSYNC_STORAGE_PWD"); + + Команда.Опция("e ext extension", "", "имя расширения для работы с хранилищем расширения") + .ТСтрока() + .ВОкружении("GITSYNC_EXTENSION"); Команда.Аргумент("PATH", "", "Путь к хранилищу конфигурации 1С.") .ТСтрока() @@ -32,8 +36,13 @@ КаталогРабочейКопии = Команда.ЗначениеАргумента("WORKDIR"); URLРепозитория = Команда.ЗначениеАргумента("URL"); - ПользовательХранилища = Команда.ЗначениеОпции("--storage-user"); - ПарольПользователяХранилища = Команда.ЗначениеОпции("--storage-pwd"); + ПользовательХранилища = Команда.ЗначениеОпции("storage-user"); + ПарольПользователяХранилища = Команда.ЗначениеОпции("storage-pwd"); + ИмяРасширения = Команда.ЗначениеОпции("extension"); + + ПользовательИБ = Команда.ЗначениеОпции("ib-user"); + ПарольПользователяИБ = Команда.ЗначениеОпции("ib-pwd"); + СтрокаСоединенияИБ = Команда.ЗначениеОпции("ib-connection"); Лог.Отладка("КаталогРабочейКопии: %1", КаталогРабочейКопии); @@ -52,7 +61,7 @@ КонецЕсли; ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); @@ -61,6 +70,8 @@ .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) + .УстановитьКонтекст(СтрокаСоединенияИБ, ПользовательИБ, ПарольПользователяИБ) + .ИмяРасширения(ИмяРасширения) .ПодпискиНаСобытия(ИндексПлагинов) .ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды()) .УровеньЛога(ПараметрыПриложения.УровеньЛога()) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" index 9dd884e7..bde6d66b 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Init.os" @@ -35,10 +35,14 @@ ПутьКХранилищу = Команда.ЗначениеАргумента("PATH"); КаталогРабочейКопии = Команда.ЗначениеАргумента("WORKDIR"); - ПользовательХранилища = Команда.ЗначениеОпции("--storage-user"); - ПарольПользователяХранилища = Команда.ЗначениеОпции("--storage-pwd"); + ПользовательХранилища = Команда.ЗначениеОпции("storage-user"); + ПарольПользователяХранилища = Команда.ЗначениеОпции("storage-pwd"); ИмяРасширения = Команда.ЗначениеОпции("extension"); + ПользовательИБ = Команда.ЗначениеОпции("ib-user"); + ПарольПользователяИБ = Команда.ЗначениеОпции("ib-pwd"); + СтрокаСоединенияИБ = Команда.ЗначениеОпции("ib-connection"); + // инициализировать с нуля ФайлКаталогРабочейКопии = Новый Файл(КаталогРабочейКопии); Если Не ФайлКаталогРабочейКопии.Существует() Тогда @@ -59,7 +63,7 @@ КонецЕсли; ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); @@ -68,6 +72,7 @@ .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) + .УстановитьКонтекст(СтрокаСоединенияИБ, ПользовательИБ, ПарольПользователяИБ) .ПодпискиНаСобытия(ИндексПлагинов) .ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды()) .ИмяРасширения(ИмяРасширения) diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginDisable.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginDisable.os" index 1f10d9c1..a0c9872e 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginDisable.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginDisable.os" @@ -17,27 +17,17 @@ ИменаПлагинов = Команда.ЗначениеАргумента("PLUGIN"); ВсеВключенные = Команда.ЗначениеОпции("all"); - ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; - - ВсеПлагины = МенеджерПлагинов.ПолучитьИндексПлагинов(); + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); Лог = ПараметрыПриложения.Лог(); Лог.Отладка("Отключение всех плагинов <%1>", ВсеВключенные); - ПлагиныДляОтключения = Новый Массив; - Если ВсеВключенные Тогда - Для каждого Плагин Из ВсеПлагины Цикл - Лог.Отладка(" --> отключаю плагин <%1>", Плагин.Ключ); - ПлагиныДляОтключения.Добавить(Плагин.Ключ); - КонецЦикла; + МенеджерПлагинов.ОтключитьВсеПлагины(); Иначе - ПлагиныДляОтключения = ИменаПлагинов; + МенеджерПлагинов.ОтключитьПлагины(ИменаПлагинов); КонецЕсли; - МенеджерПлагинов.ОтключитьПлагины(ПлагиныДляОтключения); - - МенеджерПлагинов.ЗаписатьВключенныеПлагины(); + ПараметрыПриложения.ЗаписатьВключенныеПлагины(); КонецПроцедуры diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginEnable.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginEnable.os" index b89d503b..5be60ffa 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginEnable.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginEnable.os" @@ -19,19 +19,14 @@ ИменаПлагинов = Команда.ЗначениеАргумента("PLUGIN"); ВсеУстановленные = Команда.ЗначениеОпции("all"); - ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); - ВсеПлагины = МенеджерПлагинов.ПолучитьИндексПлагинов(); - Если ВсеУстановленные Тогда + МенеджерПлагинов.ВключитьВсеПлагины(); + Иначе - Для каждого Плагин Из ВсеПлагины Цикл - МенеджерПлагинов.ВключитьПлагин(Плагин.Ключ); - КонецЦикла; + ВсеПлагины = МенеджерПлагинов.ПолучитьИндексПлагинов(); - Иначе - Для каждого Плагин Из ИменаПлагинов Цикл ИмяПлагина = СокрЛ(Плагин); @@ -42,7 +37,7 @@ Продолжить; КонецЕсли; - МенеджерПлагинов.ВключитьПлагин(ИмяПлагина); + НашлиПлагин.Включить(); Сообщить("Включен плагин: "+ ИмяПлагина); @@ -50,7 +45,7 @@ КонецЕсли; - МенеджерПлагинов.ЗаписатьВключенныеПлагины(); + ПараметрыПриложения.ЗаписатьВключенныеПлагины(); КонецПроцедуры diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginInstall.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginInstall.os" index ff4b90c2..b607b9be 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginInstall.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginInstall.os" @@ -29,8 +29,7 @@ ПакетыКУстановке = Команда.ЗначениеАргумента("NAME"); МассивФайловПлагинов = Команда.ЗначениеОпции("file"); - ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); Для каждого ПутьКПлагину Из МассивФайловПлагинов Цикл diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginList.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginList.os" index edfdae9d..e94ea93d 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginList.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginList.os" @@ -13,38 +13,34 @@ Процедура ВыполнитьКоманду(Знач Команда) Экспорт - ВывестиВсеПлагины = Команда.ЗначениеОпции("-a"); - ВыводТолькоНазваний = Команда.ЗначениеОпции("-q"); + ВывестиВсеПлагины = Команда.ЗначениеОпции("all"); + ВыводТолькоНазваний = Команда.ЗначениеОпции("quiet"); - ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; - + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ВсеПлагины = МенеджерПлагинов.ПолучитьИндексПлагинов(); - ВключенныеПлагины = МенеджерПлагинов.ПрочитатьВключенныеПлагины(); - + Если НЕ ВыводТолькоНазваний Тогда Сообщить(СтрШаблон("Каталог плагинов: <%1>", ПараметрыПриложения.КаталогПлагинов())); Сообщить("Список плагинов: "); КонецЕсли; - Для каждого Плагин Из ВсеПлагины Цикл + Для каждого КлючЗначение Из ВсеПлагины Цикл - ВключенныйПлагин = ВключенныеПлагины[Плагин.Ключ]; + Плагин = КлючЗначение.Значение; - Если ВключенныйПлагин = Неопределено - И НЕ ВывестиВсеПлагины Тогда - Продолжить; + Если НЕ ВывестиВсеПлагины Тогда + Если НЕ Плагин.Включен() Тогда + Продолжить; + КонецЕсли; КонецЕсли; - КлассПлагина = Плагин.Значение; - Если ВыводТолькоНазваний Тогда - - Сообщить(КлассПлагина.Имя()); + + Сообщить(Плагин.Имя()); Иначе - ВывестиОписаниеПлагина(КлассПлагина); + ВывестиОписаниеПлагина(Плагин); КонецЕсли; @@ -54,9 +50,10 @@ Процедура ВывестиОписаниеПлагина(КлассПлагина); - ШаблонНаименования = " %1 (версия: %3) "+ Символы.Таб + "%2"; + ШаблонНаименования = " %4 %1 [%3] " + Символы.Таб + "%2"; + ТекстВключен = ?(КлассПлагина.Включен(), "[on] ", "[off]"); - Сообщить(СтрШаблон(ШаблонНаименования, КлассПлагина.Имя(), КлассПлагина.Описание(), КлассПлагина.Версия())); + Сообщить(СтрШаблон(ШаблонНаименования, КлассПлагина.Имя(), КлассПлагина.Описание(), КлассПлагина.Версия(), ТекстВключен)); КонецПроцедуры diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginsInit.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginsInit.os" index 33f2830d..724e1d39 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginsInit.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260PluginsInit.os" @@ -16,9 +16,9 @@ МассивФайловПлагинов = НайтиФайлы(КаталогВстроенныхПлагинов, "*.ospx"); ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); - Лог.Информация("Начала инициализация предустановленных плагинов"); + Лог.Информация("Начата инициализация предустановленных плагинов"); Лог.Отладка("Каталог поиска предустановленных плагинов: <%1>", КаталогВстроенныхПлагинов); Лог.Отладка("Количество пакетов плагинов к установке: <%1>", МассивФайловПлагинов.Количество()); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" index 10867197..e8456901 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260SetVersion.os" @@ -24,7 +24,7 @@ ВызватьКоммит = Команда.ЗначениеОпции("commit"); ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" index e53d6dfe..2f624e43 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Sync.os" @@ -36,10 +36,14 @@ ПутьКХранилищу = Команда.ЗначениеАргумента("PATH"); КаталогРабочейКопии = Команда.ЗначениеАргумента("WORKDIR"); - ПользовательХранилища = Команда.ЗначениеОпции("--storage-user"); - ПарольПользователяХранилища = Команда.ЗначениеОпции("--storage-pwd"); + ПользовательХранилища = Команда.ЗначениеОпции("storage-user"); + ПарольПользователяХранилища = Команда.ЗначениеОпции("storage-pwd"); ИмяРасширения = Команда.ЗначениеОпции("extension"); + ПользовательИБ = Команда.ЗначениеОпции("ib-user"); + ПарольПользователяИБ = Команда.ЗначениеОпции("ib-pwd"); + СтрокаСоединенияИБ = Команда.ЗначениеОпции("ib-connection"); + ФайлКаталогРабочейКопии = Новый Файл(КаталогРабочейКопии); КаталогРабочейКопии = ФайлКаталогРабочейКопии.ПолноеИмя; @@ -53,7 +57,7 @@ КонецЕсли; ОбщиеПараметры = ПараметрыПриложения.Параметры(); - МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); @@ -62,13 +66,13 @@ .ПутьКПлатформе(ОбщиеПараметры.ПутьКПлатформе) .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) + .УстановитьКонтекст(СтрокаСоединенияИБ, ПользовательИБ, ПарольПользователяИБ) .ПодпискиНаСобытия(ИндексПлагинов) .ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды()) .УровеньЛога(ПараметрыПриложения.УровеньЛога()) .ИмяРасширения(ИмяРасширения) .АвторизацияВХранилищеКонфигурации(ПользовательХранилища, ПарольПользователяХранилища) .РежимУдаленияВременныхФайлов(Истина) - .РежимРаботыСХранилищемРасширения(ОбщиеПараметры.ЭтоРасширение) .Синхронизировать(КаталогИсходников, ПутьКХранилищу); Лог.Информация("Завершено выполнение команды "); diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Usage.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Usage.os" index 054bb432..3e18eefd 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Usage.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Usage.os" @@ -1,3 +1,5 @@ +#Использовать "../../core/Классы/internal/bindata" + Перем ЭтоWindows; Перем ИмяКомандыGitsync; @@ -8,22 +10,11 @@ Команда.Аргумент("COMMAND", "", "Команда для вывода подробностей использования").ТСтрока().Обязательный(Ложь); - //Команда.УстановитьДействиеПередВыполнением(ПараметрыПриложения); - //Команда.УстановитьДействиеПослеВыполнения(ПараметрыПриложения); - КонецПроцедуры Процедура ВыполнитьКоманду(Знач Команда) Экспорт - Если ПараметрыПриложения.ЭтоСборкаEXE() Тогда - - Лог.Информация("Команда для собранного приложения в exe не доступна"); - - Возврат; - - КонецЕсли; - - ИмяКоманды = Команда.ЗначениеАргумента("COMMAND"); + ИмяКоманды = Команда.ЗначениеАргумента("COMMAND"); Если ПустаяСтрока(ИмяКоманды) Тогда ВывестиОбщееИспользование(); @@ -101,26 +92,29 @@ Процедура ВывестиИспользованиеКоманды(Знач ИмяКоманды) + ИмяКомандыСправки = ""; + Если ИмяКоманды = "init" или ИмяКоманды = "i" Тогда - ВывестиИспользованиеInit(); + ИмяКомандыСправки = "init"; ИначеЕсли ИмяКоманды = "clone" или ИмяКоманды = "c" Тогда - ВывестиИспользованиеClone(); + ИмяКомандыСправки = "clone"; ИначеЕсли ИмяКоманды = "sync" или ИмяКоманды = "s" Тогда - ВывестиИспользованиеSync(); + ИмяКомандыСправки = "sync"; ИначеЕсли ИмяКоманды = "setversion" - или ИмяКоманды = "v" Тогда - ВывестиИспользованиеSetVersion(); + или ИмяКоманды = "sv" Тогда + ИмяКомандыСправки = "set-version"; ИначеЕсли ИмяКоманды = "plugins" или ИмяКоманды = "p" Тогда - ВывестиИспользованиеPlugins(); + ИмяКомандыСправки = "plugins"; Иначе - Сообщить("Команда для подробного использования не корректная или не найдена"); - ВывестиОбщееИспользование(); + ИмяКомандыСправки = "usage"; КонецЕсли; + ВывестиОписаниеДляКоманды(ИмяКомандыСправки); + КонецПроцедуры Процедура ВывестиОписание(Знач ТекстОписания) @@ -163,110 +157,31 @@ КонецПроцедуры -Процедура ВывестиИспользованиеInit() - - ОписаниеКомандыInit = ПрочитатьФайл(ОбъединитьПути(КаталогДокументации, "init.md")); - - ВывестиОписание(ОписаниеКомандыInit); - -КонецПроцедуры - -Процедура ВывестиИспользованиеClone() - - ПодробноеОписаниеКоманды = " - | Подробное описание использования команды - | - | clone (синоним c) - клонирует репозиторий git и при необходимости наполняет его данными из хранилища 1С - | Подробную справку по параметрам см. %1 clone --help - | - | В РАЗРАБОТКЕ - |"; - - ВывестиОписание(ПодробноеОписаниеКоманды); - -КонецПроцедуры - -Процедура ВывестиИспользованиеSync() - - ПодробноеОписаниеКоманды = " - | Подробное описание использования команды - | - | sync (синоним s) - инициализация нового хранилища git и наполнение его данными из хранилища 1С - | Подробную справку по параметрам см. %1 sync --help - | - | Переменные окружения: - | * GITSYNC_WORKDIR - рабочий каталог для команды - | * GITSYNC_STORAGE_PATH - путь к хранилищу конфигурации 1С. - | - | Примеры, использования: - | - | 1. Простое использование - | - | > %1 sync C:/Хранилище_1С/ C:/work_dir/ - | - | Данная команда выполнит синхронизация - | версий хранилища 1С ""C:/Хранилище_1С/"" - | в рабочем каталоге ""C:/work_dir/"" - | - | 2. Инциализация в текущем рабочем каталоге, - | переменная окружения не должна быть задана - | - | > cd C:/work_dir/ - | > %1 sync C:/Хранилище_1С/ - | - | Данная команда выполнит синхронизация - | версий хранилища 1С ""C:/Хранилище_1С/"" - | в рабочем каталоге ""C:/work_dir/"" - | - - |"; +Процедура ВывестиОписаниеДляКоманды(Знач ИмяКоманды) - ВывестиОписание(ПодробноеОписаниеКоманды); - -КонецПроцедуры - -Процедура ВывестиИспользованиеSetVersion() - - ПодробноеОписаниеКоманды = "Подробное описание использования команды - | - | setversion (синоним v) - устанавливает необходимую версию в файл VERSION - | Подробную справку по параметрам см. %1 setversion --help - | - | В РАЗРАБОТКЕ - |"; + ИмяФайла = СтрШаблон("%1.md", ИмяКоманды); - ВывестиОписание(ПодробноеОписаниеКоманды); + Если ПараметрыПриложения.ЭтоСборкаEXE() Тогда + + ЗагрузчикЗапакованныхФайловGitsync = Новый ЗагрузчикЗапакованныхФайловGitsync; + ТекстОписанияКоманды = ПрочитатьФайл(ЗагрузчикЗапакованныхФайловGitsync.ПолучитьПутьКФайлу(ИмяФайла)); -КонецПроцедуры + Иначе -Процедура ВывестиИспользованиеPlugins() - - ПодробноеОписаниеКоманды = "Подробное описание использования команды - | - | plugins (синоним p) - инициализация нового хранилища git и наполнение его данными из хранилища 1С - | Подробную справку по параметрам см. %1 plugins --help - | - | В РАЗРАБОТКЕ - |"; + КаталогДокументации = ОбъединитьПути(ОбъединитьПути(ТекущийСценарий().Каталог, "..","..", ".."),"docs"); + ТекстОписанияКоманды = ПрочитатьФайл(ОбъединитьПути(КаталогДокументации, ИмяФайла)); - ВывестиОписание(ПодробноеОписаниеКоманды); + КонецЕсли; + + ВывестиОписание(ТекстОписанияКоманды); КонецПроцедуры - Функция Инициализация() СистемнаяИнформация = Новый СистемнаяИнформация; ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; - Если ЭтоWindows Тогда - ИмяКомандыGitsync = "gitsync"; - Иначе - ИмяКомандыGitsync = "gitsync"; - КонецЕсли; - - КаталогДокументации = ОбъединитьПути(ОбъединитьПути(ТекущийСценарий().Каталог, "..","..", ".."),"docs"); - Лог = ПараметрыПриложения.Лог(); КонецФункции diff --git "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index 98e8db96..507e5848 100644 --- "a/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" +++ "b/src/cmd/\320\234\320\276\320\264\321\203\320\273\320\270/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -1,6 +1,8 @@ #Использовать logos #Использовать tempfiles #Использовать fs +#Использовать "../../core" +#Использовать "../../core/Классы/internal/files" Перем ЛогПриложения; Перем ОбщиеПараметры; @@ -11,25 +13,116 @@ Перем ИмяКаталогаПлагинов; Перем ИмяКаталогаПриложения; Перем ИмяФайлаНастройкиПриложения; +Перем МенеджерПлагинов; +Перем ИмяФайлаПлагинов; Процедура Инициализация() ОбщиеПараметры = Новый Структура(); - ОбщиеПараметры.Вставить("Плагины", Новый Массив); ОбщиеПараметры.Вставить("ВерсияПлатформы", "8.3"); ОбщиеПараметры.Вставить("ПутьКПлатформе", ""); ОбщиеПараметры.Вставить("ДоменПочты", "localhost"); ОбщиеПараметры.Вставить("ПутьКГит", ""); - ОбщиеПараметры.Вставить("ЭтоРасширение", ""); ИмяКаталогаПлагинов = "plugins"; ИмяКаталогаПриложения = ".gitsync"; ИмяФайлаНастройкиПриложения = "config.json"; + ИмяФайлаПлагинов = "plugins.json gitsync-plugins.json"; + МенеджерПлагинов = Новый МенеджерПлагинов; ОпределитьКаталогПлагинов(); КонецПроцедуры +// Выполняет чтение включенных плагинов из файла +// +// Возвращаемое значение: +// Соответствие - набор данных о плагина +// * ключ - строка - имя плагина +// * значение - булево - признак включенности плагина +// +Функция ПрочитатьВключенныеПлагины() + + ВключенныеПлагины = Новый Соответствие; + + ПутьКФайлу = ПолучитьПутьКФайлуПлагинов(); + ФайлПлагинов = Новый Файл(ПутьКФайлу); + + Если Не ФайлПлагинов.Существует() Тогда + Возврат ВключенныеПлагины; + КонецЕсли; + + JsonСтрока = РаботаСФайлами.ПрочитатьФайл(ПутьКФайлу); + + Если ПустаяСтрока(JsonСтрока) Тогда + Возврат ВключенныеПлагины; + КонецЕсли; + + ДанныеФайла = РаботаСФайлами.ОбъектИзJson(JsonСтрока); + + Для каждого ДанныеПлагинаИзФайла Из ДанныеФайла Цикл + + Если Булево(ДанныеПлагинаИзФайла.Значение) Тогда + ВключенныеПлагины.Вставить(ДанныеПлагинаИзФайла.Ключ, ДанныеПлагинаИзФайла.Значение); + КонецЕсли; + + КонецЦикла; + + Возврат ВключенныеПлагины; + +КонецФункции + +Функция МенеджерПлагинов() Экспорт + Возврат МенеджерПлагинов; +КонецФункции + +// Процедура записывает активированные плагины в файл +// +Процедура ЗаписатьВключенныеПлагины() Экспорт + + ИмяФайла = ПолучитьПутьКФайлуПлагинов(); + + КаталогФайла = Новый Файл(ИмяФайла).Путь; + ФС.ОбеспечитьКаталог(КаталогФайла); + + ДанныеДляЗаписи = Новый Соответствие; + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); + + Для каждого КлючЗначение Из ИндексПлагинов Цикл + + Плагин = КлючЗначение.Значение; + ДанныеДляЗаписи.Вставить(Плагин.Имя(), Плагин.Включен()); + + КонецЦикла; + + ТекстФайла = РаботаСФайлами.ОБъектВJson(ДанныеДляЗаписи); + + РаботаСФайлами.ЗаписатьФайл(ИмяФайла, ТекстФайла); + +КонецПроцедуры + +#КонецОбласти + +Функция ПолучитьПутьКФайлуПлагинов() + + МассивИменФайла = СтрРазделить(ИмяФайлаПлагинов, " ", Ложь); + + Для каждого ИмяФайла Из МассивИменФайла Цикл + + ПутьКФайлуПлагинов = ОбъединитьПути(КаталогПлагинов(), ИмяФайла); + + ФайлПлагинов = Новый Файл(ПутьКФайлуПлагинов); + + Если Не ФайлПлагинов.Существует() Тогда + Возврат ФайлПлагинов.ПолноеИмя; + КонецЕсли; + + КонецЦикла; + + Возврат ОбъединитьПути(КаталогПлагинов(), МассивИменФайла[0]); + +КонецФункции + Функция ЭтоСборкаEXE() Экспорт Если ЭтоПриложениеEXE = Неопределено Тогда @@ -58,7 +151,7 @@ Если ЗначениеЗаполнено(ПутьККаталогуПлагинов) Тогда - ОбщиеПараметры.УправлениеПлагинами.УстановитьКаталогПлагинов(ПутьККаталогуПлагинов); + МенеджерПлагинов.УстановитьКаталогПлагинов(ПутьККаталогуПлагинов); КонецЕсли; @@ -109,7 +202,7 @@ ИначеЕсли ПроверитьТекущийКаталог() Тогда - Возврат ; + Возврат; Иначе @@ -177,29 +270,26 @@ // TODO Сделать чтение настройки из файла КонецПроцедуры -Функция ФайлВключенныхПлагинов() Экспорт - Возврат ОбъединитьПути(КаталогПлагинов(), "gitsync-plugins.json"); -КонецФункции - Функция ИмяФайлаНастройкиПакетнойСинхронизации() Экспорт - Возврат "config.yaml"; + Возврат "config.json"; КонецФункции Процедура ВыполнитьПодпискуПриРегистрацииКомандыПриложения(Команда) Экспорт - ОбработчикПодписок = ОбщиеПараметры.УправлениеПлагинами.НовыйМенеджерПодписок(); + ОбработчикПодписок = МенеджерПлагинов.НовыйМенеджерПодписок(); ОбработчикПодписок.ПриРегистрацииКомандыПриложения(Команда.ПолучитьИмяКоманды(), Команда); КонецПроцедуры Процедура ПодготовитьПлагины() Экспорт - МенеджерПлагинов = Новый УправлениеПлагинами; + МенеджерПлагинов = Новый МенеджерПлагинов; МенеджерПлагинов.УстановитьКаталогПлагинов(КаталогПлагинов()); - МенеджерПлагинов.УстановитьФайлВключенныхПлагинов(ФайлВключенныхПлагинов()); МенеджерПлагинов.ЗагрузитьПлагины(); + ВключенныеПлагины = ПрочитатьВключенныеПлагины(); + МенеджерПлагинов.ВключитьПлагины(ВключенныеПлагины); - ОбщиеПараметры.Вставить("УправлениеПлагинами", МенеджерПлагинов); + ОбщиеПараметры.Вставить("МенеджерПлагинов", МенеджерПлагинов); КонецПроцедуры @@ -248,7 +338,7 @@ Если РежимОтладки Тогда Лог().УстановитьУровень(УровниЛога.Отладка); - ОбщиеПараметры.УправлениеПлагинами.УстановитьРежимОтладки(); + МенеджерПлагинов().УстановитьРежимОтладки(); КонецЕсли; @@ -281,7 +371,7 @@ Функция Версия() Экспорт - Возврат "3.0.0-beta4"; + Возврат "3.0.0-rc.2"; КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/README_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/README_Gitsync.os" new file mode 100644 index 00000000..2fa0476d --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/README_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "README.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "D716283B8EAD871D80805B7FAB76784C"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = "0J7Qv9C40YHQsNC90LjQtSDQv9GD0LHQu9C40YfQvdC+0LPQviDQuNC90YLQtdGA0YTQtdC50YHQsCDQsdC40LHQu9C40L7RgtC10LrQuCBgZ2l0c3luY2AKPT09PT09PT09Cgo8IS0tIFRPQyBpbnNlcnRBbmNob3I6dHJ1ZSAtLT4KCgo8IS0tIC9UT0MgLS0+Cgo+INCU0L7QutGD0LzQtdC90YLQsNGG0LjRjyDQsiDRgNCw0LfRgNCw0LHQvtGC0LrQtQoKPCEtLSBUT0RPOiDQn9C+0LTQs9C+0YLQvtCy0LjRgtGMINC00L7QutGD0LzQtdC90YLQsNGG0LjRjiAtLT4="; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/clone_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/clone_Gitsync.os" new file mode 100644 index 00000000..6217bcc1 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/clone_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "clone.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "D41D8CD98F00B204E9800998ECF8427E"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = ""; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/init_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/init_Gitsync.os" new file mode 100644 index 00000000..22a0dc34 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/init_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "init.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "C13A148F21716C93E20BA5B2F99F57E4"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = "IyDQn9C+0LTRgNC+0LHQvdC+0LUg0L7Qv9C40YHQsNC90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQutC+0LzQsNC90LTRiyA8aW5pdD4KCmluaXQgKNGB0LjQvdC+0L3QuNC8IGkpIC0g0LjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0L3QvtCy0L7Qs9C+INGF0YDQsNC90LjQu9C40YnQsCBnaXQg0Lgg0L3QsNC/0L7Qu9C90LXQvdC40LUg0LXQs9C+INC00LDQvdC90YvQvNC4INC40Lcg0YXRgNCw0L3QuNC70LjRidCwIDHQoQoKPiDQn9C+0LTRgNC+0LHQvdGD0Y4g0YHQv9GA0LDQstC60YMg0L/QviDQvtC/0YbQuNGP0Lwg0Lgg0LDRgNCz0YPQvNC10L3RgtCw0Lwg0YHQvC4gYGdpdHN5bmMgaW5pdCAtLWhlbHBgCgotLS0tLS0tLS0tLS0tLQojIyMg0KHQv9GA0LDQstC60LAg0L/QviDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjiDQutC+0LzQsNC90LTRizoKYGBgCtCa0L7QvNCw0L3QtNCwOiBpbml0LCBpCiDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDRgdGC0YDRg9C60YLRg9GA0Ysg0L3QvtCy0L7Qs9C+INGF0YDQsNC90LjQu9C40YnQsCBnaXQuINCf0L7QtNCz0L7RgtC+0LLQutCwINC6INGB0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNC4CgrQodGC0YDQvtC60LAg0LfQsNC/0YPRgdC60LA6IGdpdHN5bmMgaW5pdCBb0J7Qn9Cm0JjQmF0gUEFUSCBbV09SS0RJUl0KCtCQ0YDQs9GD0LzQtdC90YLRizoKICBQQVRIICAgICAgICAgINCf0YPRgtGMINC6INGF0YDQsNC90LjQu9C40YnRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggMdChLiAoZW52ICRHSVRTWU5DX1NUT1JBR0VfUEFUSCkKICBXT1JLRElSICAgICAgINCQ0LTRgNC10YEg0LvQvtC60LDQu9GM0L3QvtCz0L4g0YDQtdC/0L7Qt9C40YLQvtGA0LjRjyBHSVQg0LjQu9C4INC60LDRgtCw0LvQvtCzINC40YHRhdC+0LTQvdC40LrQvtCyINCy0L3Rg9GC0YDQuCDQu9C+0LrQsNC70YzQvdC+0Lkg0LrQvtC/0LjQuCBnaXQt0YDQtdC/0L7Qt9C40YLQsNGA0LjRjy4g0J/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0YLQtdC60YPRidC40Lkg0LrQsNGC0LDQu9C+0LMgKGVudiAkR0lUU1lOQ19XT1JLRElSKQoK0J7Qv9GG0LjQuDoKICAtdSwgLS1zdG9yYWdlLXVzZXIgICAg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGF0YDQsNC90LjQu9C40YnQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggKGVudiAkR0lUU1lOQ19TVE9SQUdFX1VTRVIpICjQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCkKICAtcCwgLS1zdG9yYWdlLXB3ZCAgICAg0L/QsNGA0L7Qu9GMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRhdGA0LDQvdC40LvQuNGJ0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IChlbnYgJEdJVFNZTkNfU1RPUkFHRV9QQVNTV09SRCwgJEdJVFNZTkNfU1RPUkFHRV9QV0QpCmBgYAotLS0tLS0tLS0tLS0tLQojIyMg0JPQu9C+0LHQsNC70YzQvdGL0LUg0L/QtdGA0LXQvNC10L3QvdGL0LUg0L7QutGA0YPQttC10L3QuNGPCnwg0JjQvNGPICAgICAgICAgICAgICAgICB8INCe0L/QuNGB0LDQvdC40LUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgR0lUU1lOQ19WOFZFUlNJT05gIHwg0LzQsNGB0LrQsCDQstC10YDRgdC40Lgg0L/Qu9Cw0YLRhNC+0YDQvNGLICg4LjMsIDguMy41LCA4LjMuNi4yMjk5INC4INGCLtC/LikgfAp8IGBHSVRTWU5DX1ZFUlNPQkVgICAgfCDQstGL0LLQvtC0INC+0YLQu9Cw0LTQvtGH0L3QvtC5INC40L3RhNC+0YDQvNCw0YbQuNGPINCyINC/0YDQvtGG0LXRgdGB0LUg0LLRi9C/0L7Qu9C90LXQvdC40LggICAgICB8CnwgYEdJVFNZTkNfVEVNUGAgICAgICB8INC/0YPRgtGMINC6INC60LDRgtCw0LvQvtCz0YMg0LLRgNC10LzQtdC90L3Ri9GFINGE0LDQudC70L7QsiAgICAgICAgICAgICAgICAgICAgICAgfAp8IGBHSVRTWU5DX0VNQUlMYCAgICAgfCDQtNC+0LzQtdC9INC/0L7Rh9GC0Ysg0LTQu9GPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5IGdpdCAgICAgICAgICAgICAgICAgICAgICB8CgotLS0tLS0tLS0tLS0tLQojIyMg0J/QtdGA0LXQvNC10L3QvdGL0LUg0L7QutGA0YPQttC10L3QuNGPINC60L7QvNCw0L3QtNGLCgp8INCY0LzRjyAgICAgICAgICAgICAgICAgICAgICAgIHwg0J7Qv9C40YHQsNC90LjQtSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKfCBgR0lUU1lOQ19XT1JLRElSYCAgICAgICAgICB8INGA0LDQsdC+0YfQuNC5INC60LDRgtCw0LvQvtCzINC00LvRjyDQutC+0LzQsNC90LTRiyAgICAgICAgICAgICAgICB8CnwgYEdJVFNZTkNfU1RPUkFHRV9QQVRIYCAgICAgfCDQv9GD0YLRjCDQuiDRhdGA0LDQvdC40LvQuNGJ0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IDHQoS4gICAgICAgICAgfAp8IGBHSVRTWU5DX1NUT1JBR0VfVVNFUmAgICAgIHwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGF0YDQsNC90LjQu9C40YnQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggICAgICAgIHwKfCBgR0lUU1lOQ19TVE9SQUdFX1BBU1NXT1JEYCB8INC/0LDRgNC+0LvRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YXRgNCw0L3QuNC70LjRidCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCB8Ci0tLS0tLS0tLS0tLS0tCiMjIyDQl9C90LDRh9C10L3QuNGPINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOOgp8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAp8IFdPUktESVIgICAgICAgICAgICB8INGC0LXQutGD0YnQsNGPINGA0LDQsdC+0YfQsNGPINC00LjRgNC10LrRgtC+0YDQuNGPICAgfAp8IC11LCAtLXN0b3JhZ2UtdXNlciB8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCBg0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YBgIHwKCi0tLS0tLS0tLS0tLS0tCiMjINCf0YDQuNC80LXRgNGLLCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjwoqKioKKiDQn9GA0L7RgdGC0L7QtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtQoKICAgIGBnaXRzeW5jIGluaXQgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS8gQzovR0lUL3NyY2AKCiAgICDQlNCw0L3QvdCw0Y8g0LrQvtC80LDQvdC00LAg0YHQvtC30LTQsNGB0YIg0L3QvtCy0YvQuSDRgNC10L/QvtC30LjRgtC+0YDQuNC5IGdpdCDQsiDQutCw0YLQsNC70L7Qs9C1IGBDOi9HSVQvc3JjYCDQuNC3INGF0YDQsNC90LjQu9C40YnQsCAx0KEg0L/QviDQv9GD0YLQuCBgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS9gCioqKgoqINCj0LrQsNC30LDQvdC40LUg0LrQvtC90LrRgNC10YLQvdC+0Lkg0LLQtdGA0YHQuNC4INC/0LvQsNGC0YTQvtGA0LzRiwoKICAgIGBnaXRzeW5jIC0tdjh2ZXJzaW9uPTguMy45IGluaXQgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS8gQzovR0lUL3NyY2AKCiAgICDQlNCw0L3QvdCw0Y8g0LrQvtC80LDQvdC00LAg0YHQvtC30LTQsNGB0YIg0L3QvtCy0YvQuSDRgNC10L/QvtC30LjRgtC+0YDQuNC5IGdpdCDQsiDQutCw0YLQsNC70L7Qs9C1IGBDOi9HSVQvc3JjYCDQuNC3INGF0YDQsNC90LjQu9C40YnQsCAx0KEg0L/QviDQv9GD0YLQuCBgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS9gCiAgICDQlNC70Y8g0YDQsNCx0L7RgtGLINCx0YPQtNC10YIg0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMY9GPINC/0LvQsNGC0YTQvtGA0LzQsCA4LjMuOS54eHh4CioqKgoqINCj0LrQsNC30LDQvdC40LUg0LLRi9Cy0L7QtNCwINC+0YLQu9Cw0LTQvtGH0L3Ri9GFINC70L7Qs9C+0LIKCiAgICBgZ2l0c3luYyAtLXZlcmJvc2UgaW5pdCBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChLyBDOi9HSVQvc3JjYAogICAg0LjQu9C4CiAgICBgZ2l0c3luYyAtdiBpbml0IEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvIEM6L0dJVC9zcmNgCgogICAg0JTQsNC90L3QsNGPINC60L7QvNCw0L3QtNCwINGB0L7Qt9C00LDRgdGCINC90L7QstGL0Lkg0YDQtdC/0L7Qt9C40YLQvtGA0LjQuSBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovR0lUL3NyY2Ag0LjQtyDRhdGA0LDQvdC40LvQuNGJ0LAgMdChINC/0L4g0L/Rg9GC0LggYEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvYAogICAg0J/QvtGB0LvQtSDRg9C60LDQt9Cw0L3QuNGPINCx0YPQtNC10YIg0LLRi9Cy0L7QtNC40YLRjNGB0Y8g0LTQvtC/0L7Qu9C90LjRgtC10LvRjNC90YvQtSDQvtGC0LvQsNC00L7Rh9C90YvQtSDQu9C+0LPQuCDRgSDQv9GA0LjQt9C90LDQutC+0LwgYNCe0YLQu9Cw0LTQutCwYAoqKioKKiDQo9C60LDQt9Cw0L3QuNC1INC60LDRgtCw0LvQvtCz0LAg0LLRgNC10LzQtdC90L3Ri9GFINGE0LDQudC70L7QsiDQv9GA0Lgg0YDQsNCx0L7RgtC1INC/0YDQuNC70L7QttC10L3QuNGPCgogICAgYGdpdHN5bmMgLS10ZW1wZGlyPS4vdGVtcF9zeW5jLyBpbml0IEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvIEM6L0dJVC9zcmNgCiAgICDQuNC70LgKICAgIGBnaXRzeW5jIC10IC4vdGVtcF9zeW5jLyBpbml0IEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvIEM6L0dJVC9zcmNgCgogICAg0JTQsNC90L3QsNGPINC60L7QvNCw0L3QtNCwINGB0L7Qt9C00LDRgdGCINC90L7QstGL0Lkg0YDQtdC/0L7Qt9C40YLQvtGA0LjQuSBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovR0lUL3NyY2Ag0LjQtyDRhdGA0LDQvdC40LvQuNGJ0LAgMdChINC/0L4g0L/Rg9GC0LggYEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvYAogICAg0JTQu9GPINGA0LDQsdC+0YLRiyDQsdGD0LTQtdGCINC40YHQv9C+0LvRjNC30L7QstCw0YLRjGPRjyDQutCw0YLQsNC70L7QsyDQstGA0LXQvNC10L3QvdGL0YUg0YTQsNC50LvQvtCyIGAuL3RlbXBfc3luYy9gCioqKgoqINCY0L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGPINCyINGC0LXQutGD0YnQtdC8INGA0LDQsdC+0YfQtdC8INC60LDRgtCw0LvQvtCz0LUsCgogICAgPiDQv9C10YDQtdC80LXQvdC90LDRjyDQvtC60YDRg9C20LXQvdC40Y8gKipgR0lUU1lOQ19XT1JLRElSYCoqINC90LUg0LTQvtC70LbQvdCwINCx0YvRgtGMINC30LDQtNCw0L3QsAoKICAgIGBgYHNoCiAgICBjZCBDOi93b3JrX2Rpci8KICAgIGdpdHN5bmMgaW5pdCBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChLwogICAgYGBgCiAgICDQlNCw0L3QvdCw0Y8g0LrQvtC80LDQvdC00LAg0YHQvtC30LTQsNGB0YIg0L3QvtCy0YvQuSDRgNC10L/QvtC30LjRgtC+0YDQuNC5IGdpdCDQsiDQutCw0YLQsNC70L7Qs9C1IGBDOi93b3JrX2Rpci9gINC40Lcg0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2AKKioqCiog0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0LIg0YEg0YPQutCw0LfQsNC90LjQtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQuCDQv9Cw0YDQvtC70Y8uCgogICAgYGBgc2gKICAgIGdpdHN5bmMgaW5pdCAtLXN0b3JhZ2UtdXNlciBBZG1pbiAtLXN0b3JhZ2UtcHdkPVNlY3JldCBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChLyBDOi93b3JrX2Rpci8KICAgIGBgYAogICAg0JTQsNC90L3QsNGPINC60L7QvNCw0L3QtNCwINGB0L7Qt9C00LDRgdGCINC90L7QstGL0Lkg0YDQtdC/0L7Qt9C40YLQvtGA0LjQuSBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovd29ya19kaXIvYCDQuNC3INGF0YDQsNC90LjQu9C40YnQsCAx0KEg0L/QviDQv9GD0YLQuCBgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS9gCioqKgoqINCY0YHQv9C+0LvRjNC30L7QstCw0L3QuNC1INGB0LjQvdC+0L3QuNC80L7QsiAo0LrQvtGA0L7RgtC60LDRjyDQstC10YDRgdC40Y8g0L/RgNC10LTRi9C00YPRidC10LPQviDQv9GA0LjQvNC10YDQsCkKCiAgICBgYGBzaAogICAgZ2l0c3luYyBpIC11QWRtaW4gLXA9U2VjcmV0IEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvIEM6L3dvcmtfZGlyLwogICAgYGBgCiAgICDQlNCw0L3QvdCw0Y8g0LrQvtC80LDQvdC00LAg0YHQvtC30LTQsNGB0YIg0L3QvtCy0YvQuSDRgNC10L/QvtC30LjRgtC+0YDQuNC5IGdpdCDQsiDQutCw0YLQsNC70L7Qs9C1IGBDOi93b3JrX2Rpci9gINC40Lcg0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2AKKioqCiog0JjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LUg0YLQvtC70YzQutC+INC/0LXRgNC10LzQtdC90L3Ri9GFINC+0LrRgNGD0LbQtdC90LjRjwoKICAgIGxpbnV4OgogICAgYGBgc2gKICAgIGV4cG9ydCBHSVRTWU5DX1dPUktESVI9Li93b3JrX2Rpci8KICAgIGV4cG9ydCBHSVRTWU5DX1NUT1JBR0VfUEFUSD0uL9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvCgogICAgZXhwb3J0IEdJVFNZTkNfU1RPUkFHRV9VU0VSPdCQ0LTQvNC40L0KICAgIGV4cG9ydCBHSVRTWU5DX1NUT1JBR0VfUEFTU1dPUkQ90J/QsNGA0L7Qu9GMCiAgICBleHBvcnQgR0lUU1lOQ19WOFZFUlNJT049OC4zLjcKICAgIGV4cG9ydCBHSVRTWU5DX1ZFUlNPQkU9dHJ1ZSAj0JzQvtC20L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0JTQsC/Qm9C+0LbRjC/QndC10YIv0JjRgdGC0LjQvdCwCiAgICBleHBvcnQgR0lUU1lOQ19URU1QPS4vdGVtcC9zeW5jCiAgICBnaXRzeW5jIGkKICAgIGBgYAogICAgCiAgICB3aW5kb3dzOgogICAgYGBgY21kCiAgICBzZXQgR0lUU1lOQ19XT1JLRElSPS4vd29ya19kaXIvCiAgICBzZXQgR0lUU1lOQ19TVE9SQUdFX1BBVEg9Li/QpdGA0LDQvdC40LvQuNGJ0LVfMdChLwoKICAgIHNldCBHSVRTWU5DX1NUT1JBR0VfVVNFUj3QkNC00LzQuNC9CiAgICBzZXQgR0lUU1lOQ19TVE9SQUdFX1BBU1NXT1JEPdCf0LDRgNC+0LvRjAogICAgc2V0IEdJVFNZTkNfVjhWRVJTSU9OPTguMy43CiAgICBzZXQgR0lUU1lOQ19WRVJTT0JFPXRydWUgI9Cc0L7QttC90L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCU0LAv0JvQvtC20Ywv0J3QtdGCL9CY0YHRgtC40L3QsAogICAgc2V0IEdJVFNZTkNfVEVNUD0uL3RlbXAvc3luYwoKICAgIGdpdHN5bmMgaQogICAgYGBgCiAgICDQlNCw0L3QvdCw0Y8g0LrQvtC80LDQvdC00LAg0YHQvtC30LTQsNGB0YIg0L3QvtCy0YvQuSDRgNC10L/QvtC30LjRgtC+0YDQuNC5IGdpdCDQsiDQutCw0YLQsNC70L7Qs9C1IGBDOi93b3JrX2Rpci9gINC40Lcg0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2A="; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/plugins_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/plugins_Gitsync.os" new file mode 100644 index 00000000..ffcedf55 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/plugins_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "plugins.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "D41D8CD98F00B204E9800998ECF8427E"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = ""; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/setversion_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/setversion_Gitsync.os" new file mode 100644 index 00000000..35edd93d --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/setversion_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "setversion.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "D41D8CD98F00B204E9800998ECF8427E"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = ""; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/sync_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/sync_Gitsync.os" new file mode 100644 index 00000000..7243f598 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/sync_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "sync.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "74CEF0F61D02F663EE3857B6112384D2"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = "IyDQn9C+0LTRgNC+0LHQvdC+0LUg0L7Qv9C40YHQsNC90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQutC+0LzQsNC90LTRiyA8c3luYz4KCnN5bmMgKNGB0LjQvdC+0L3QuNC8IHMpIC0g0JLRi9C/0L7Qu9C90Y/QtdGCINGB0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNGOINGF0YDQsNC90LjQu9C40YnQsCAx0KEg0YEgZ2l0LdGA0LXQv9C+0LfQuNGC0L7RgNC40LXQvAoKPiDQn9C+0LTRgNC+0LHQvdGD0Y4g0YHQv9GA0LDQstC60YMg0L/QviDQvtC/0YbQuNGP0Lwg0Lgg0LDRgNCz0YPQvNC10L3RgtCw0Lwg0YHQvC4gYGdpdHN5bmMgc3luYyAtLWhlbHBgCgojIyMg0KHQv9GA0LDQstC60LAg0L/QviDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjiDQutC+0LzQsNC90LTRizoKYGBgCtCa0L7QvNCw0L3QtNCwOiBzeW5jLCBzCiDQktGL0L/QvtC70L3Rj9C10YIg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y4g0YXRgNCw0L3QuNC70LjRidCwIDHQoSDRgSBnaXQt0YDQtdC/0L7Qt9C40YLQvtGA0LjQtdC8CgrQodGC0YDQvtC60LAg0LfQsNC/0YPRgdC60LA6IGdpdHN5bmMgc3luYyBb0J7Qn9Cm0JjQmF0gUEFUSCBbV09SS0RJUl0KCtCQ0YDQs9GD0LzQtdC90YLRizoKICBQQVRIICAgICAgICAgINCf0YPRgtGMINC6INGF0YDQsNC90LjQu9C40YnRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggMdChLiAoZW52ICRHSVRTWU5DX1NUT1JBR0VfUEFUSCkKICBXT1JLRElSICAgICAgINCa0LDRgtCw0LvQvtCzINC40YHRhdC+0LTQvdC40LrQvtCyINCy0L3Rg9GC0YDQuCDQu9C+0LrQsNC70YzQvdC+0Lkg0LrQvtC/0LjQuCBnaXQt0YDQtdC/0L7Qt9C40YLQsNGA0LjRjy4gKGVudiAkR0lUU1lOQ19XT1JLRElSKQoK0J7Qv9GG0LjQuDoKICAtdSwgLS1zdG9yYWdlLXVzZXIgICAg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGF0YDQsNC90LjQu9C40YnQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggKGVudiAkR0lUU1lOQ19TVE9SQUdFX1VTRVIpICjQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCkKICAtcCwgLS1zdG9yYWdlLXB3ZCAgICAg0L/QsNGA0L7Qu9GMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDRhdGA0LDQvdC40LvQuNGJ0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IChlbnYgJEdJVFNZTkNfU1RPUkFHRV9QQVNTV09SRCwgJEdJVFNZTkNfU1RPUkFHRV9QV0QpCgpgYGAKIyMjINCT0LvQvtCx0LDQu9GM0L3Ri9C1INC/0LXRgNC10LzQtdC90L3Ri9C1INC+0LrRgNGD0LbQtdC90LjRjwp8INCY0LzRjyAgICAgICAgICAgICAgICAgfCDQntC/0LjRgdCw0L3QuNC1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYEdJVFNZTkNfVjhWRVJTSU9OYCB8INC80LDRgdC60LAg0LLQtdGA0YHQuNC4INC/0LvQsNGC0YTQvtGA0LzRiyAoOC4zLCA4LjMuNSwgOC4zLjYuMjI5OSDQuCDRgi7Qvy4pIHwKfCBgR0lUU1lOQ19WRVJTT0JFYCAgIHwg0LLRi9Cy0L7QtCDQvtGC0LvQsNC00L7Rh9C90L7QuSDQuNC90YTQvtGA0LzQsNGG0LjRjyDQsiDQv9GA0L7RhtC10YHRgdC1INCy0YvQv9C+0LvQvdC10L3QuNC4ICAgICAgfAp8IGBHSVRTWU5DX1RFTVBgICAgICAgfCDQv9GD0YLRjCDQuiDQutCw0YLQsNC70L7Qs9GDINCy0YDQtdC80LXQvdC90YvRhSDRhNCw0LnQu9C+0LIgICAgICAgICAgICAgICAgICAgICAgIHwKfCBgR0lUU1lOQ19FTUFJTGAgICAgIHwg0LTQvtC80LXQvSDQv9C+0YfRgtGLINC00LvRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSBnaXQgICAgICAgICAgICAgICAgICAgICAgfAoKIyMjINCf0LXRgNC10LzQtdC90L3Ri9C1INC+0LrRgNGD0LbQtdC90LjRjyDQutC+0LzQsNC90LTRiwoKfCDQmNC80Y8gICAgICAgICAgICAgICAgICAgICAgICB8INCe0L/QuNGB0LDQvdC40LUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgYEdJVFNZTkNfV09SS0RJUmAgICAgICAgICAgfCDRgNCw0LHQvtGH0LjQuSDQutCw0YLQsNC70L7QsyDQtNC70Y8g0LrQvtC80LDQvdC00YsgICAgICAgICAgICAgICAgfAp8IGBHSVRTWU5DX1NUT1JBR0VfUEFUSGAgICAgIHwg0L/Rg9GC0Ywg0Log0YXRgNCw0L3QuNC70LjRidGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCAx0KEuICAgICAgICAgIHwKfCBgR0lUU1lOQ19TVE9SQUdFX1VTRVJgICAgICB8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRhdGA0LDQvdC40LvQuNGJ0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4ICAgICAgICB8CnwgYEdJVFNZTkNfU1RPUkFHRV9QQVNTV09SRGAgfCDQv9Cw0YDQvtC70Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGF0YDQsNC90LjQu9C40YnQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggfAoKIyMjINCX0L3QsNGH0LXQvdC40Y8g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4KCnwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CnwgV09SS0RJUiAgICAgICAgICAgIHwg0YLQtdC60YPRidCw0Y8g0YDQsNCx0L7Rh9Cw0Y8g0LTQuNGA0LXQutGC0L7RgNC40Y8gICB8CnwgLXUsIC0tc3RvcmFnZS11c2VyIHwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMIGDQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgGAgfAoKIyMg0J/RgNC40LzQtdGA0YssINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPCgoqINCf0YDQvtGB0YLQvtC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1CgogICAgYGdpdHN5bmMgc3luYyBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChLyBDOi9HSVQvc3JjYAoKICAgINCU0LDQvdC90LDRjyDQutC+0LzQsNC90LTQsCDQstGL0L/QvtC70L3QuNGC0Ywg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y4g0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2Ag0Lgg0YDQtdC/0L7Qt9C40YLQvtGA0LjRjyBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovR0lUL3NyY2AKCiog0JjQvdC40YbQuNCw0LvQuNC30LDRhtC40Y8g0LIg0YLQtdC60YPRidC10Lwg0YDQsNCx0L7Rh9C10Lwg0LrQsNGC0LDQu9C+0LPQtSwKCiAgICA+INC/0LXRgNC10LzQtdC90L3QsNGPINC+0LrRgNGD0LbQtdC90LjRjyAqKmBHSVRTWU5DX1dPUktESVJgKiog0L3QtSDQtNC+0LvQttC90LAg0LHRi9GC0Ywg0LfQsNC00LDQvdCwCgogICAgYGBgc2gKICAgIGNkIEM6L3dvcmtfZGlyLwogICAgZ2l0c3luYyBzeW5jIEM6L9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvCiAgICBgYGAKICAgINCU0LDQvdC90LDRjyDQutC+0LzQsNC90LTQsCDQstGL0L/QvtC70L3QuNGC0Ywg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y4g0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2Ag0Lgg0YDQtdC/0L7Qt9C40YLQvtGA0LjRjyBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovd29ya19kaXJgCgoqINCY0L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGPINCyINGBINGD0LrQsNC30LDQvdC40LXQvCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0Lgg0L/QsNGA0L7Qu9GPLgoKICAgIGBgYHNoCiAgICBnaXRzeW5jIHN5bmMgLS1zdG9yYWdlLXVzZXIgQWRtaW4gLS1zdG9yYWdlLXB3ZD1TZWNyZXQgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS8gQzovd29ya19kaXIvCiAgICBgYGAKICAgINCU0LDQvdC90LDRjyDQutC+0LzQsNC90LTQsCDQstGL0L/QvtC70L3QuNGC0Ywg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y4g0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2Ag0Lgg0YDQtdC/0L7Qt9C40YLQvtGA0LjRjyBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovd29ya19kaXJgCiAgICDQmNGB0L/QvtC70YzQt9GD0Y8g0LTQu9GPINC/0L7QtNC60LvRjtGH0LXQvdC40Y8g0Log0YXRgNCw0L3QuNC70LjRidGDIDHQoSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gYEFkbWluYCDQuCDQv9Cw0YDQvtC70YwgYFNlY3JldGAKCiog0JjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LUg0YHQuNC90L7QvdC40LzQvtCyICjQutC+0YDQvtGC0LrQsNGPINCy0LXRgNGB0LjRjyDQv9GA0LXQtNGL0LTRg9GJ0LXQs9C+INC/0YDQuNC80LXRgNCwKQoKICAgIGBgYHNoCiAgICBnaXRzeW5jIHMgLXVBZG1pbiAtcD1TZWNyZXQgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS8gQzovd29ya19kaXIvCiAgICBgYGAKICAgINCU0LDQvdC90LDRjyDQutC+0LzQsNC90LTQsCDQstGL0L/QvtC70L3QuNGC0Ywg0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y4g0YXRgNCw0L3QuNC70LjRidCwIDHQoSDQv9C+INC/0YPRgtC4IGBDOi/QpdGA0LDQvdC40LvQuNGJ0LVfMdChL2Ag0Lgg0YDQtdC/0L7Qt9C40YLQvtGA0LjRjyBnaXQg0LIg0LrQsNGC0LDQu9C+0LPQtSBgQzovd29ya19kaXJgCiAgICDQmNGB0L/QvtC70YzQt9GD0Y8g0LTQu9GPINC/0L7QtNC60LvRjtGH0LXQvdC40Y8g0Log0YXRgNCw0L3QuNC70LjRidGDIDHQoSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8gYEFkbWluYCDQuCDQv9Cw0YDQvtC70YwgYFNlY3JldGAKCiog0JjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LUg0YLQvtC70YzQutC+INC/0LXRgNC10LzQtdC90L3Ri9GFINC+0LrRgNGD0LbQtdC90LjRjwoKICAgIGxpbnV4OgogICAgYGBgc2gKICAgIGV4cG9ydCBHSVRTWU5DX1dPUktESVI9Li93b3JrX2Rpci8KICAgIGV4cG9ydCBHSVRTWU5DX1NUT1JBR0VfUEFUSD0uL9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvCgogICAgZXhwb3J0IEdJVFNZTkNfU1RPUkFHRV9VU0VSPUFkbWluCiAgICBleHBvcnQgR0lUU1lOQ19TVE9SQUdFX1BBU1NXT1JEPVNlY3JldAogICAgZXhwb3J0IEdJVFNZTkNfVjhWRVJTSU9OPTguMy43CiAgICBleHBvcnQgR0lUU1lOQ19WRVJTT0JFPXRydWUgI9Cc0L7QttC90L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCU0LAv0JvQvtC20Ywv0J3QtdGCL9CY0YHRgtC40L3QsAogICAgZXhwb3J0IEdJVFNZTkNfVEVNUD0uL3RlbXAvc3luYwogICAgZ2l0c3luYyBzCiAgICBgYGAKICAgIHdpbmRvd3M6CiAgICBgYGBjbWQKICAgIHNldCBHSVRTWU5DX1dPUktESVI9Li93b3JrX2Rpci8KICAgIHNldCBHSVRTWU5DX1NUT1JBR0VfUEFUSD0uL9Cl0YDQsNC90LjQu9C40YnQtV8x0KEvCgogICAgc2V0IEdJVFNZTkNfU1RPUkFHRV9VU0VSPUFkbWluCiAgICBzZXQgR0lUU1lOQ19TVE9SQUdFX1BBU1NXT1JEPVNlY3JldAogICAgc2V0IEdJVFNZTkNfVjhWRVJTSU9OPTguMy43CiAgICBzZXQgR0lUU1lOQ19WRVJTT0JFPXRydWUgI9Cc0L7QttC90L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDRgtGMINCU0LAv0JvQvtC20Ywv0J3QtdGCL9CY0YHRgtC40L3QsAogICAgc2V0IEdJVFNZTkNfVEVNUD0uL3RlbXAvc3luYwoKICAgIGdpdHN5bmMgcwogICAgYGBgCiAgICDQlNCw0L3QvdCw0Y8g0LrQvtC80LDQvdC00LAg0LLRi9C/0L7Qu9C90LjRgtGMINGB0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNGOINGF0YDQsNC90LjQu9C40YnQsCAx0KEg0L/QviDQv9GD0YLQuCBgQzov0KXRgNCw0L3QuNC70LjRidC1XzHQoS9gINC4INGA0LXQv9C+0LfQuNGC0L7RgNC40Y8gZ2l0INCyINC60LDRgtCw0LvQvtCz0LUgYEM6L3dvcmtfZGlyYAogICAg0JjRgdC/0L7Qu9GM0LfRg9GPINC00LvRjyDQv9C+0LTQutC70Y7Rh9C10L3QuNGPINC6INGF0YDQsNC90LjQu9C40YnRgyAx0KEg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPIGBBZG1pbmAg0Lgg0L/QsNGA0L7Qu9GMIGBTZWNyZXRgCg=="; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/tempExtension_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/tempExtension_Gitsync.os" new file mode 100644 index 00000000..dd27e4e9 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/tempExtension_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "tempExtension.cfe"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "6B3A3B869213E02BE3C63E74A4117049"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = "////fwACAAADAAAAAAAAAA0KMDAwMDAwMjQgMDAwMDAyMDAgN2ZmZmZmZmYgDQovAgAArgIAAP///3+ACQAA/wkAAP///38eDAAAaQwAAP///38AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0KMDAwMDAwNjAgMDAwMDAwNjAgN2ZmZmZmZmYgDQqgmg3OP0MCAKCaDc4/QwIAAAAAAGIANQBhAGEAMAA3ADYAYwAtAGMAMQA4ADcALQA0ADQAZAAwAC0AYQBmADgANQAtADkAYwAwADIANABkADQAMQBkADMAYwA5AAAAAAANCjAwMDAwNmIzIDAwMDAwNmIzIDdmZmZmZmZmIA0KvVhNbiW5Dd4PMJdwto+AKFEitc1FBiIlHSBAVgMDyS7HyBGyGWCAYJAruE+SK+Sr56rX7cl0TwduxN0o+NmUxCL5/cj//ue/fsy377/70esYSVtQsCmJzERjW6UeKcsUniX6860doT1m5RSThu8g5inUpQilJKnXxXmHHnF8POp99/T4nG7pJhpScjKKXRJJRKPeZ6ZU9trd+kilPd+eXv7+8o8Pf/3wt5efP/zl5aeXX15+fvmJn153evrTn58+F4GlTze+6a3PHcN9Uxs6SGwMMs1Mc9el5qVptFu5cV1FWnby6E5yvFmffdOM1HPeJrWlW77pbtoKCyk37DarkJVSaSiPYlU9c2C38Mmb1yTNsyBsFPKZMkWTMnvt1XViN27sIXF/fTyKZRpJKu1qO9eVRa0gLBr+zRXIaDHCeJMzXmaJ5LV8WwtG2BxNDLWjvDmTsG2ylfHotXlwGq3tW37+/ruzNkcjnj/7TOcX/cbj+rphThpbGA1LnaSZUc+K124tj7qkidav2+nrgo7EX/9fc/T85rtveNQ3C7JUOD1yPF7i/5zAhbqnP6BsmmxPYCA8Fkm2Tl60UNJRh4qv1fnG9xn5dgnkrwsrjyIdGd/zPrNeErXsLrTqBi8N8IxhoCmz+TTmGIvPdU9/fMJ3R/7/43J+3/L8vuXlfcvlfcvr+5a39y3X9y239y3vb5cfO+SPosI/PJ0Avg9Yfp3RrqU56LzHCJJVwMeCE2ZZvWob3sXOcUxhPbRn4hblkMlK3ptj8GvysdLodV6he4l1Q3o1zyO00SihH0NV2yN0b+hSkG1BAhqBBBgfZ406cuap/cIR+7xr+KxjQok6k3sWgtCvtbj0BHE+Q6t2yFyhCGiN8EYCVoJWoHzeR4WInKFZIN4qEO9ejKTCKNiEKiaWLEOzM68ztKRZq0ynKgzG2S1DkBTGgqPN2MuzxxWqO+/RB3nW9vAU9a2nOEO7z7khwSmQoVQId4f00uw9NraGBPoVuqokGTAAayPXANuNyUwdlclzDwiwPUIVbgZSnJr+TgukucTsSnsyFH6BUoePTAV5TW0d2Vy7yrJsEGdKW4TEK0wG45CRvaAA6jOuClQzMYgnlbZgL+DFyAw8CVZeLjAOaV4V0BnzMBM0YlSSnht5lU5sMAVt4NDYZyh8SchA54EDJIBXJmtoseKo3DYDE1eu1qqmkhepChzJYhi84oPqnG3Z2K527Xo6wPVFB8hfZRHu+41dBQOYqOSGPhXZOHopXI7ONnMrFuU8OmCSUu+LuDj23A7vOGsiOL2UcspdH+MXAQOo3UgDRCCNEaqwmQoAuHpUGL8zFGek3rbjd/WACpzU2IADzk+iyhhN/0gSRwV2zFwH6mQ5XxU4UJAsCTrOvPsR1x4SfHpfjF/o9EJ9ZLS5gB865oIOYnH2NfrUrxNgmJ56ZwRGyS2BB4DiL0MnNZ5wwOipHia/pUW9YiTWVIxxQc1NrlBd+IDJMt18sRdo5zfYiwsXyYlpt+SvoZ+DDkfVNRwzVjCvIqiD81wEJ4sfN3UU/OKZzaMed5HtSFM84S4CkoQrPwZSOJcH05Y27LDwqCmwCLzD2UyfsOe+SrBqV31gl7NPrTDxfuhCBR4iKmVP3urue6QrAXh916PFua/8ZUawPBjLcWzO6WBakCxYilhwFPizjkeu3vDrgVHnJr+zKyYUxceGpQLrXw49binMBgCpH0jLYARcq7LVmUH3nvsVGlvQAFBSwY3lGpe0307uayhI1pKiUdAPFCuhu1a5U+lHEzbuKZIfqDiBsUozqANTGvcRywG6B6v1XaR22d19fHIZPFExBvBoindD28FojJsaXhNy3SYbt52ynfp8jEaxpQtsUiBPQCDew0BVZGBKX+E5rccUzbVmdzuK1kAXG5wlkIHIuBNFQW3uEvQJsHHPkp7APZGBf9yJCcQAjasVIuPNa/FfY1q3lm4Z4Ot63L4KFAZCCtkL0AOmaqxPsi/JOSU0E01B9gr8jYW2hlsMG2DCdk3rRvqmw6jJAtHX5VAOOAQvY80BSKSlb7KvjCV1Gq0h4LHUYHsMFGO5V9aaYGfWf1cfbd5eklBJh6AFONjrcW/NxrgxhLv4J/mvhmsvgMNFQda9InDh4gwcewUfowP1yj9mgQCDrOtRTENNukP+VkwHbzaTwW/yX83Y8qF/uehxKwZPNt3UU/AqRdEt/XX14TBaXgJlLfBlUiGJY8B0AHUFQMM0xmv1z79HKAAI1epRDq5QhpOqmIqElIbnMld9k9L9lPvF8/zhfwANCjAwMDAwMDYwIDAwMDAwMDYwIDdmZmZmZmZmIA0KoJoNzj9DAgCgmg3OP0MCAAAAAABjADEAOAA2ADEAOABjADgALQBhADgAMAA5AC0ANAA2ADgAOAAtADkAMgA3AGQALQA3ADYANgAyAGEANQBlADQANgA0ADcANQAAAAAADQowMDAwMDA3ZCAwMDAwMDIwMCA3ZmZmZmZmZiANCi2MwQlCMRBE74JN5JyF3XWzyS9nk68FCJ4+OXxsxDLUf7CFpBJbMIoMDMNjZt7bayG/3y34tX9CXygppZLAEk4gmhJMHGeIqmzhKCoxVO/arV/72tf2bPf2cL/1wM7TkGQ2zuU0PiSAUDYwPMyAIeNkXLQQeR7188VVj/UDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQowMDAwMDAyYyAwMDAwMDAyYyA3ZmZmZmZmZiANCqCaDc4/QwIAoJoNzj9DAgAAAAAAYwBvAG4AZgBpAGcAaQBuAGYAbwAAAAAADQowMDAwMDBmYyAwMDAwMDIwMCA3ZmZmZmZmZiANCo2OTW6CQABG9yRcgi0zcQZmhpkFixpFG7BYS0DYwQy1RZHKT1s1nqyLHqlXaGt6gCZv8SUvX/K+Pj7PCOja2cIMXAdHNkYAXXTtl6sCBc1z5DAJJeYOJEQhmD9yCoVEFlEEK1sKkGdPiyax3t5LM/LZ3KPWdGSfnE6eaL3P4ociQau9GUzGq24I42OvttkkvntNpqLiu3BY67rWF2F6PKh6qEkT9DfpTPDO3LjuX4bxnw4DHG6ffc8bVeqFBmbjdyqSXlS1y1177wLj58owlxzmHAlIGOdQWI6CDmNWTkvCiEMNMPJwMF4Uy3mIzSgMN22Jt0UwzNZF6l6+AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/usage_Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/usage_Gitsync.os" new file mode 100644 index 00000000..2831f01d --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/usage_Gitsync.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "usage.md"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "D41D8CD98F00B204E9800998ECF8427E"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = ""; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\244\320\260\320\271\320\273\320\276\320\262Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\244\320\260\320\271\320\273\320\276\320\262Gitsync.os" new file mode 100644 index 00000000..beb0b8e7 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\244\320\260\320\271\320\273\320\276\320\262Gitsync.os" @@ -0,0 +1,79 @@ +#Использовать tempfiles + +#Область ПрограммныйИнтерфейс + +Функция ПолучитьПутьКФайлу(Знач ИмяФайла) Экспорт + + Возврат ПолучитьВременныйПутьКФайлу(ИмяФайла); + +КонецФункции + +Функция ПолучитьВременныйПутьКФайлу(Знач ИмяФайла) Экспорт + + МенеджерЗапакованныхФайлов = Новый МенеджерЗапакованныхФайловGitsync; + ИндексФайлов = МенеджерЗапакованныхФайлов.ПолучитьИндексФайлов(); + + ИмяКлассаФайла = ИндексФайлов[ИмяФайла]; + + Если ИмяКлассаФайла = Неопределено Тогда + ВызватьИсключение СтрШаблон("Не удалось найти двоичные данные для файла <%1>", ИмяФайла); + КонецЕсли; + + ФайлРаспаковки = Новый Файл(ИмяФайла); + + КлассФайла = Новый (ИмяКлассаФайла); + + ПутьКФайлу = ВременныеФайлы.НовоеИмяФайла(ФайлРаспаковки.Расширение); + + РаспаковатьДанные(ПутьКФайлу, КлассФайла); + + Возврат ПутьКФайлу; + +КонецФункции + +Функция ПолучитьХешФайла(Знач ИмяФайла) Экспорт + + МенеджерЗапакованныхФайлов = Новый МенеджерЗапакованныхФайловGitsync; + ИндексФайлов = МенеджерЗапакованныхФайлов.ПолучитьИндексФайлов(); + + ИмяКлассаФайла = ИндексФайлов[ИмяФайла]; + + Если ИмяКлассаФайла = Неопределено Тогда + ВызватьИсключение СтрШаблон("Не удалось найти двоичные данные для файла <%1>", ИмяФайла); + КонецЕсли; + + ФайлРаспаковки = Новый Файл(ИмяФайла); + + КлассФайла = Новый (ИмяКлассаФайла); + + Возврат КлассФайла.Хеш() + +КонецФункции + +#КонецОбласти + +#Область Упакованные_файлы + +Процедура РаспаковатьДанные(Знач ПутьКФайлу, КлассФайла) + + ДвоичныеДанные = Base64Значение(КлассФайла.ДвоичныеДанные()); + + ОбеспечитьКаталог(ПутьКФайлу); + + ДвоичныеДанные.Записать(ПутьКФайлу); + +КонецПроцедуры + +Процедура ОбеспечитьКаталог(ПутьККаталогу) + + ВременныйКаталог = Новый Файл(ПутьККаталогу); + + Если ВременныйКаталог.Существует() Тогда + Возврат; + КонецЕсли; + + СоздатьКаталог(ВременныйКаталог.Путь); + +КонецПроцедуры + +#КонецОбласти diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\244\320\260\320\271\320\273\320\276\320\262Gitsync.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\244\320\260\320\271\320\273\320\276\320\262Gitsync.os" new file mode 100644 index 00000000..8b1191eb --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/bindata/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\244\320\260\320\271\320\273\320\276\320\262Gitsync.os" @@ -0,0 +1,15 @@ +Функция ПолучитьИндексФайлов() Экспорт + + ИндексФайлов = Новый Соответствие; + ИндексФайлов.Вставить("tempExtension.cfe", "tempExtension_Gitsync"); + ИндексФайлов.Вставить("clone.md", "clone_Gitsync"); + ИндексФайлов.Вставить("init.md", "init_Gitsync"); + ИндексФайлов.Вставить("plugins.md", "plugins_Gitsync"); + ИндексФайлов.Вставить("README.md", "README_Gitsync"); + ИндексФайлов.Вставить("setversion.md", "setversion_Gitsync"); + ИндексФайлов.Вставить("sync.md", "sync_Gitsync"); + ИндексФайлов.Вставить("usage.md", "usage_Gitsync"); + + Возврат ИндексФайлов; + +КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/files/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/files/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.os" new file mode 100644 index 00000000..01a53335 --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/files/\320\234\320\276\320\264\321\203\320\273\320\270/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\244\320\260\320\271\320\273\320\260\320\274\320\270.os" @@ -0,0 +1,49 @@ +#Использовать json + +Функция ПрочитатьФайл(Знач ПутьКФайлу) Экспорт + + ЧтениеТекста = Новый ЧтениеТекста(ПутьКФайлу, "UTF-8"); + ТекстФайла = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + + Возврат ТекстФайла; + +КонецФункции + +Процедура ЗаписатьФайл(Знач ПутьКФайлу, Знач ТекстФайла) Экспорт + + ЗаписьТекста = Новый ЗаписьТекста(ПутьКФайлу); + ЗаписьТекста.Записать(ТекстФайла); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + +Функция ОБъектВJson(Знач Объект, ПараметрыЗаписи = Неопределено) Экспорт + + Если ПараметрыЗаписи = Неопределено Тогда + ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, " ", ,,,,,, Истина); + КонецЕсли; + + ЗаписьJSON = Новый ЗаписьJSON; + ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи); + ЗаписатьJSON(ЗаписьJSON, Объект); + + Возврат ЗаписьJSON.Закрыть(); + +КонецФункции + +Функция ОбъектИзJson(ТекстJSON, ЧитатьВСтруктуру = Ложь, ФорматДаты = Неопределено) Экспорт + + Если ФорматДаты = Неопределено Тогда + ФорматДаты = ФорматДатыJSON.ISO; + КонецЕсли; + ЧтениеJSON = Новый ЧтениеJSON; + ЧтениеJSON.УстановитьСтроку(ТекстJSON); + + Объект = ПрочитатьJSON(ЧтениеJSON, + НЕ ЧитатьВСтруктуру,, + ФорматДаты); + ЧтениеJSON.Закрыть(); + Возврат Объект; + +КонецФункции \ No newline at end of file diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" index f6af1162..9104f016 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -1,6 +1,6 @@ #Использовать logos -Перем ИндексУстановленныхПлагинов; // Соответствие +Перем НаборПлагиновСинхронизации; // Соответствие Перем Лог; // Объект - Логирование Перем ДоступныйИнтерфейсПлагинов; // Объект.ИнтерфейсОбъекта - интерфейс плагинов Перем КаталогПлагинов; // Строка - каталог пакетов плагинов @@ -20,7 +20,29 @@ // Процедура ЗагрузитьПлагины() Экспорт - ОбновитьИндексПлагинов(); + ПодключениеПлагиновКаталога = Новый ПодключениеПлагиновКаталога; + МассивПлагинов = ПодключениеПлагиновКаталога.ПодключитьПлагиныКаталога(КаталогПлагинов); + Лог.Отладка("Количество плагинов <%1> каталога <%2>", МассивПлагинов.Количество(), КаталогПлагинов); + + СоздательНабораПлагиновСинхронизации = Новый СоздательНабораПлагиновСинхронизации; + + Для каждого ИмяКлассаПлагина Из МассивПлагинов Цикл + + СоздательНабораПлагиновСинхронизации.ДобавитьПлагин(ИмяКлассаПлагина); + + КонецЦикла; + + ПодключениеЗапакованныхПлагинов = Новый ПодключениеЗапакованныхПлагинов; + МассивПлагинов = ПодключениеЗапакованныхПлагинов.ИндексПлагинов(); + Лог.Отладка("Количество встроенных плагинов <%1>", МассивПлагинов.Количество()); + + Для каждого ИмяКлассаПлагина Из МассивПлагинов Цикл + + СоздательНабораПлагиновСинхронизации.ДобавитьПлагин(ИмяКлассаПлагина); + + КонецЦикла; + + НаборПлагиновСинхронизации = СоздательНабораПлагиновСинхронизации.Создать(); КонецПроцедуры @@ -32,113 +54,17 @@ // * значение - Объект - ссылка на произвольный объект // Функция ИндексПлагинов() Экспорт - Возврат ИндексУстановленныхПлагинов; + Возврат НаборПлагиновСинхронизации; КонецФункции #КонецОбласти #Область Вспомогательные_процедуры_и_функции -Процедура ОбновитьИндексПлагинов() - - Лог.Отладка("Обновление индекса плагина из каталога <%1>", КаталогПлагинов); - ИндексУстановленныхПлагинов = Новый Соответствие; - - КаталогиПлагинов = НайтиФайлы(КаталогПлагинов, ПолучитьМаскуВсеФайлы(), Ложь); - - Для каждого Каталоги Из КаталогиПлагинов Цикл - - Если Не Каталоги.ЭтоКаталог() Тогда - Продолжить; - КонецЕсли; - - ЗагрузитьПлагин(Каталоги.ПолноеИмя); - - КонецЦикла; - - Лог.Отладка("В индекс плагинов добавлено <%1> плагинов", ИндексУстановленныхПлагинов.Количество()); - -КонецПроцедуры - -Процедура ЗагрузитьПлагин(Знач Путь) - - Лог.Отладка("Загружаю плагины из каталога <%1>", Путь); - - ФайлМанифеста = Новый Файл(ОбъединитьПути(Путь, "lib.config")); - - Если ФайлМанифеста.Существует() Тогда - Лог.Отладка("Обрабатываем по манифесту"); - ДобавитьКлассыПлагинов(ФайлМанифеста.ПолноеИмя, Путь); - Иначе - Лог.Отладка("Плагины из каталога <%1> не могут быть загружены - не найден файл ", Путь); - КонецЕсли; - -КонецПроцедуры - -Процедура ДобавитьКлассыПлагинов(Знач Файл, Знач Путь) - - Чтение = Новый ЧтениеXML; - Чтение.ОткрытьФайл(Файл); - Чтение.ПерейтиКСодержимому(); - - Если Чтение.ЛокальноеИмя <> "package-def" Тогда - Чтение.Закрыть(); - Возврат; - КонецЕсли; - - Пока Чтение.Прочитать() Цикл - - Если Чтение.ТипУзла = ТипУзлаXML.Комментарий Тогда - - Продолжить; - - КонецЕсли; - - Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда - - Если Чтение.ЛокальноеИмя = "class" Тогда - ФайлКласса = Новый Файл(ОбъединитьПути(Путь, Чтение.ЗначениеАтрибута("file"))); - Если ФайлКласса.Существует() - И ФайлКласса.ЭтоФайл() Тогда - Идентификатор = Чтение.ЗначениеАтрибута("name"); - Если Не ПустаяСтрока(Идентификатор) Тогда - ДобавитьПлагинВИндекс(Идентификатор, ФайлКласса.ПолноеИмя); - КонецЕсли; - Иначе - ВызватьИсключение "Не найден файл " + ФайлКласса.ПолноеИмя + ", указанный в манифесте"; - КонецЕсли; - - Чтение.Прочитать(); // в конец элемента - - КонецЕсли; - - КонецЕсли; - - КонецЦикла; - - Чтение.Закрыть(); - -КонецПроцедуры - -Процедура ДобавитьПлагинВИндекс(Знач ИмяКлассаПлагина, Знач ИмяФайлаКласса) - - Лог.Отладка("Добавляю плагин <%1> в индекс плагинов", ИмяКлассаПлагина); - - Попытка - НовыйПлагин = Новый ПлагинСинхронизации(ИмяФайлаКласса, ИмяКлассаПлагина, ДоступныйИнтерфейсПлагинов); - Исключение - Лог.Отладка("Ошибка добавления плагина в индекс плагинов. По причине: <%1>", ОписаниеОшибки()); - Возврат; - КонецПопытки; - - ИндексУстановленныхПлагинов.Вставить(НовыйПлагин.Имя(), НовыйПлагин); - -КонецПроцедуры - Процедура ПриСозданииОбъекта(Знач ВходящийКаталогПлагинов = Неопределено) КаталогПлагинов = ВходящийКаталогПлагинов; - ДоступныйИнтерфейсПлагинов = Новый ИнтерфейсПлагинов().Интерфейс(); + НаборПлагиновСинхронизации = Новый Соответствие(); Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.loader"); КонецПроцедуры diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" deleted file mode 100644 index 776223b2..00000000 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\227\320\260\320\263\321\200\321\203\320\267\321\207\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" +++ /dev/null @@ -1,84 +0,0 @@ -#Использовать logos - -Перем ИндексУстановленныхПлагинов; // Соответствие -Перем Лог; // Объект - Логирование -Перем ДоступныйИнтерфейсПлагинов; // Объект.ИнтерфейсОбъекта - интерфейс плагинов -Перем КаталогПлагинов; // Строка - каталог пакетов плагинов - -#Область Экспортные_методы - -// Устанавливает каталог плагинов -// -// Параметры: -// ПутьККаталогу - Строка - полный путь к каталогу плагинов -// -Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогу) Экспорт - КаталогПлагинов = ПутьККаталогу; -КонецПроцедуры - -// Выполняет загрузки плагинов в индекс -// -Процедура ЗагрузитьПлагины() Экспорт - - ОбновитьИндексПлагинов(); - -КонецПроцедуры - -// Возвращает загруженный индекс плагинов -// -// Возвращаемое значение: -// Соответствие - набор плагинов -// * ключ - Строка - имя плагина -// * значение - Объект - ссылка на произвольный объект -// -Функция ИндексПлагинов() Экспорт - Возврат ИндексУстановленныхПлагинов; -КонецФункции - -#КонецОбласти - -#Область Вспомогательные_процедуры_и_функции - -Процедура ОбновитьИндексПлагинов() - - Лог.Отладка("Обновление индекса плагина из каталога <%1>", КаталогПлагинов); - ИндексУстановленныхПлагинов = Новый Соответствие; - - ИндексПлагиновEXE = Новый ИндексПлагиновEXE; - ИндексПлагинов = ИндексПлагиновEXE.ПолучитьИндексПлагиновEXE(); - - Для каждого Плагин Из ИндексПлагинов Цикл - - ДобавитьПлагинВИндекс(Плагин); - - КонецЦикла; - - Лог.Отладка("В индекс плагинов добавлено <%1> плагинов", ИндексУстановленныхПлагинов.Количество()); - -КонецПроцедуры - -Процедура ДобавитьПлагинВИндекс(Знач ИмяКлассаПлагина) - - Лог.Отладка("Добавляю плагин <%1> в индекс плагинов", ИмяКлассаПлагина); - - Попытка - НовыйПлагин = Новый ПлагинСинхронизации(Неопределено, ИмяКлассаПлагина, ДоступныйИнтерфейсПлагинов); - ИндексУстановленныхПлагинов.Вставить(НовыйПлагин.Имя(), НовыйПлагин); - - Исключение - Лог.Отладка("Ошибка добавления плагина в индекс плагинов. По причине: <%1>", ОписаниеОшибки()); - - КонецПопытки; - - -КонецПроцедуры - -Процедура ПриСозданииОбъекта(Знач ВходящийКаталогПлагинов = Неопределено) - - КаталогПлагинов = ВходящийКаталогПлагинов; - ДоступныйИнтерфейсПлагинов = Новый ИнтерфейсПлагинов().Интерфейс(); - Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.loader"); - -КонецПроцедуры - -#КонецОбласти diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\320\264\320\265\320\272\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\320\264\320\265\320\272\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" deleted file mode 100644 index 4300f5d9..00000000 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\230\320\275\320\264\320\265\320\272\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262EXE.os" +++ /dev/null @@ -1,7 +0,0 @@ -Функция ПолучитьИндексПлагиновEXE() Экспорт - - ИндексПлагинов = Новый Массив; - - Возврат ИндексПлагинов; - -КонецФункции \ No newline at end of file diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" index 4d593898..63bb64d7 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\276\320\264\320\277\320\270\321\201\320\276\320\272.os" @@ -153,18 +153,20 @@ // * ГУИД_Автора - Строка - уникальный идентификатор автора версии // * ПредставлениеАвтора - Строка - представление автора для коммита в git // ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации +// НачальнаяВерсия - Число - номер начальной версии хранилища // СтандартнаяОбработка - Булево - признак отказ от обработки по умолчанию // -Процедура ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, СтандартнаяОбработка) Экспорт +Процедура ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, НачальнаяВерсия, СтандартнаяОбработка) Экспорт ПараметрыВыполнения = Новый Массив; ПараметрыВыполнения.Добавить(ТаблицаВерсий); ПараметрыВыполнения.Добавить(ПутьКХранилищу); + ПараметрыВыполнения.Добавить(НачальнаяВерсия); ПараметрыВыполнения.Добавить(СтандартнаяОбработка); ВыполнитьПодпискуНаСобытие("ПриПолученииТаблицыВерсий", ПараметрыВыполнения); - ПрисвоитьЗначенияПараметраПроцедуры(ПараметрыВыполнения, ТаблицаВерсий, ПутьКХранилищу, СтандартнаяОбработка); + ПрисвоитьЗначенияПараметраПроцедуры(ПараметрыВыполнения, ТаблицаВерсий, ПутьКХранилищу, НачальнаяВерсия, СтандартнаяОбработка); КонецПроцедуры @@ -243,6 +245,48 @@ КонецПроцедуры +// Вызывается при получении таблицы пользователей из хранилища конфигурации +// +// Параметры: +// ПутьКФайлуАвторов - Строка - полный путь к хранилищу конфигурации +// ТаблицаАвторов - ТаблицаЗначений - инициализированная таблица с колонками: +// * Автор - Строка - имя автора версии в хранилище +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// СтандартнаяОбработка - Булево - признак отказ от обработки по умолчанию +// +Процедура ПриПолученииТаблицыАвторов(ПутьКФайлуАвторов, ТаблицаАвторов, СтандартнаяОбработка) Экспорт + + ПараметрыВыполнения = Новый Массив; + ПараметрыВыполнения.Добавить(ПутьКФайлуАвторов); + ПараметрыВыполнения.Добавить(ТаблицаАвторов); + ПараметрыВыполнения.Добавить(СтандартнаяОбработка); + + ВыполнитьПодпискуНаСобытие("ПриПолученииТаблицыАвторов", ПараметрыВыполнения); + + ПрисвоитьЗначенияПараметраПроцедуры(ПараметрыВыполнения, ПутьКФайлуАвторов, ТаблицаАвторов, СтандартнаяОбработка); + +КонецПроцедуры + +// Вызывается при получении таблицы пользователей из хранилища конфигурации +// +// Параметры: +// ПутьКФайлуАвторов - Строка - полный путь к хранилищу конфигурации +// ТаблицаАвторов - ТаблицаЗначений - инициализированная таблица с колонками: +// * Автор - Строка - имя автора версии в хранилище +// * ПредставлениеАвтора - Строка - представление автора для коммита в git +// +Процедура ПослеПолученияТаблицыАвторов(ПутьКФайлуАвторов, ТаблицаАвторов) Экспорт + + ПараметрыВыполнения = Новый Массив; + ПараметрыВыполнения.Добавить(ПутьКФайлуАвторов); + ПараметрыВыполнения.Добавить(ТаблицаАвторов); + + ВыполнитьПодпискуНаСобытие("ПослеПолученияТаблицыАвторов", ПараметрыВыполнения); + + ПрисвоитьЗначенияПараметраПроцедуры(ПараметрыВыполнения, ПутьКФайлуАвторов, ТаблицаАвторов); + +КонецПроцедуры + #КонецОбласти #Область Подписки_на_обработки_строки_версии diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 1a9eeb86..ebc39004 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\273\320\260\320\263\320\270\320\275\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -154,16 +154,10 @@ КлассПлагина = ПолучитьКлассПлагина(); КонецПроцедуры -Процедура ПриСозданииОбъекта(Знач ВходящееИмяФайлаКлассаПлагина, Знач ВходящееИмяКлассаПлагина, ИнтерфейсМетодовПлагинов) +Процедура ПриСозданииОбъекта(Знач ВходящееИмяКлассаПлагина, ИнтерфейсМетодовПлагинов) ИмяКлассаПлагина = ВходящееИмяКлассаПлагина; - Если НЕ ВходящееИмяФайлаКлассаПлагина = Неопределено Тогда - - ПодключитьСценарий(ВходящееИмяФайлаКлассаПлагина, ИмяКлассаПлагина); - - КонецЕсли; - КлассПлагина = ПолучитьКлассПлагина(); ИнтерфейсПлагина = Новый ИнтерфейсОбъекта(); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" new file mode 100644 index 00000000..cbb704bd --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\227\320\260\320\277\320\260\320\272\320\276\320\262\320\260\320\275\320\275\321\213\321\205\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -0,0 +1,9 @@ +// ИСПОЛЬЗУЕТСЯ ТОЛЬКО ДЛЯ СБОРКИ В EXE +// +Функция ИндексПлагинов() Экспорт + + ИндексПлагинов = Новый Массив; + + Возврат ИндексПлагинов; + +КонецФункции \ No newline at end of file diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os" new file mode 100644 index 00000000..d91e271a --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\276\320\264\320\272\320\273\321\216\321\207\320\265\320\275\320\270\320\265\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262\320\232\320\260\321\202\320\260\320\273\320\276\320\263\320\260.os" @@ -0,0 +1,93 @@ +#Использовать logos + +Перем МассивПодключенныхПлагинов; +Перем Лог; + +Функция ПодключитьПлагиныКаталога(Знач КаталогПлагинов) Экспорт + + МассивПодключенныхПлагинов = Новый Массив(); + + Если ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE" Тогда + Возврат МассивПодключенныхПлагинов; + КонецЕсли; + + Лог.Отладка("Подключение плагинов из каталога <%1>", КаталогПлагинов); + КаталогиПлагинов = НайтиФайлы(КаталогПлагинов, ПолучитьМаскуВсеФайлы(), Ложь); + + Для каждого Каталоги Из КаталогиПлагинов Цикл + + Если Не Каталоги.ЭтоКаталог() Тогда + Продолжить; + КонецЕсли; + + ЗагрузитьПлагин(Каталоги.ПолноеИмя); + + КонецЦикла; + + Возврат МассивПодключенныхПлагинов; + +КонецФункции + +Процедура ЗагрузитьПлагин(Знач Путь) + + Лог.Отладка("Загружаю плагины из каталога <%1>", Путь); + + ФайлМанифеста = Новый Файл(ОбъединитьПути(Путь, "lib.config")); + + Если ФайлМанифеста.Существует() Тогда + Лог.Отладка("Обрабатываем по манифесту"); + ДобавитьКлассыПлагинов(ФайлМанифеста.ПолноеИмя, Путь); + Иначе + Лог.Отладка("Плагины из каталога <%1> не могут быть загружены - не найден файл ", Путь); + КонецЕсли; + +КонецПроцедуры + +Процедура ДобавитьКлассыПлагинов(Знач Файл, Знач Путь) + + Чтение = Новый ЧтениеXML; + Чтение.ОткрытьФайл(Файл); + Чтение.ПерейтиКСодержимому(); + + Если Чтение.ЛокальноеИмя <> "package-def" Тогда + Чтение.Закрыть(); + Возврат; + КонецЕсли; + + Пока Чтение.Прочитать() Цикл + + Если Чтение.ТипУзла = ТипУзлаXML.Комментарий Тогда + + Продолжить; + + КонецЕсли; + + Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда + + Если Чтение.ЛокальноеИмя = "class" Тогда + ФайлКласса = Новый Файл(ОбъединитьПути(Путь, Чтение.ЗначениеАтрибута("file"))); + Если ФайлКласса.Существует() + И ФайлКласса.ЭтоФайл() Тогда + Идентификатор = Чтение.ЗначениеАтрибута("name"); + Если Не ПустаяСтрока(Идентификатор) Тогда + ПодключитьСценарий(ФайлКласса.ПолноеИмя, Идентификатор); + МассивПодключенныхПлагинов.Добавить(Идентификатор); + КонецЕсли; + Иначе + ВызватьИсключение "Не найден файл " + ФайлКласса.ПолноеИмя + ", указанный в манифесте"; + КонецЕсли; + + Чтение.Прочитать(); // в конец элемента + + КонецЕсли; + + КонецЕсли; + + КонецЦикла; + + Чтение.Закрыть(); + +КонецПроцедуры + +Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.loader"); +МассивПодключенныхПлагинов = Новый Массив(); \ No newline at end of file diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 130d1f81..374addbe 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -11,14 +11,12 @@ Перем ПарольПользователяХранилища; Перем УровеньЛогаСинхронизации; Перем КоличествоЦикловОжиданияЛицензии; - +Перем ИмяРасширения; Перем ИндексПодписчиков; Перем ПараметрыПодписчиков; Перем МенеджерСинхронизации; Перем КаталогПлагинов; -Перем ПутьКФайлуВключенныхПлагинов; -Перем ЛокальноеУправлениеПлагинами; Перем Лог; @@ -32,7 +30,7 @@ ПроверитьВозможностьСинхронизации(); - НастроитьМенеджерСинхронизации(); + МенеджерСинхронизации = ПолучитьМенеджерСинхронизации(); Если МенеджерСинхронизации.ТребуетсяСинхронизироватьХранилищеСГит(ПутьКРабочемуКаталогу, ПутьКХранилищу) Тогда @@ -44,7 +42,7 @@ Лог.Информация("Путь к рабочей копии: <%1>", ПутьКРабочемуКаталогу); Иначе - Лог.Предупреждение("--> Синхронизация не требуется <--"); + Лог.Информация("--> Синхронизация не требуется <--"); КонецЕсли; Лог.Информация("================================="); @@ -54,23 +52,25 @@ // TODO: Написать проверку какую? ) КонецПроцедуры -Процедура НастроитьМенеджерСинхронизации() +Функция ПолучитьМенеджерСинхронизации() - Если МенеджерСинхронизации = Неопределено Тогда - МенеджерСинхронизации = Новый МенеджерСинхронизации(); - КонецЕсли; - + МенеджерСинхронизации = Новый МенеджерСинхронизации(); МенеджерСинхронизации.ВерсияПлатформы(ВерсияПлатформы) .ДоменПочтыПоУмолчанию(ДоменПочтыПоУмолчанию) .ИсполняемыйФайлГит(ПутьИсполняемомуФайлуГит) .ПодпискиНаСобытия(ИндексПодписчиков) .ПараметрыПодписокНаСобытия(ПараметрыПодписчиков) - .УровеньЛога(УровеньЛогаСинхронизации) .ЦикловОжиданияЛицензии(КоличествоЦикловОжиданияЛицензии) .РежимУдаленияВременныхФайлов(Истина) .АвторизацияВХранилищеКонфигурации(ПользовательХранилища, ПарольПользователяХранилища); -КонецПроцедуры + Если ЗначениеЗаполнено(ИмяРасширения) Тогда + МенеджерСинхронизации.ИмяРасширения(ИмяРасширения); + КонецЕсли; + + Возврат МенеджерСинхронизации; + +КонецФункции // Устанавливает путь к каталогу плагинов // @@ -85,40 +85,13 @@ Возврат ЭтотОбъект; КонецФункции -// Устанавливает уровень вывода логов -// -// Параметры: -// НовыйУровеньЛога - Строка - уровень вывода лога -// -// Возвращаемое значение: -// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> -// -Функция УровеньЛога(Знач НовыйУровеньЛога) Экспорт - - УровеньЛогаСинхронизации = НовыйУровеньЛога; - Возврат ЭтотОбъект; - -КонецФункции - -// Устанавливает путь к файлу включенных плагинов -// -// Параметры: -// НовыйПутьКФайлуВключенныхПлагинов - Строка - путь к файлу включенных плагинов -// -// Возвращаемое значение: -// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> -// -Функция ФайлВключенныхПлагинов(Знач НовыйПутьКФайлуВключенныхПлагинов) Экспорт - ПутьКФайлуВключенныхПлагинов = НовыйПутьКФайлуВключенныхПлагинов; - Возврат ЭтотОбъект; -КонецФункции - Процедура ПрочитатьПараметры(Знач ВходящиеПараметры) Экспорт Наименование = ВходящиеПараметры.Наименование; ПользовательХранилища = ВходящиеПараметры.ПользовательХранилища; ПарольПользователяХранилища = ВходящиеПараметры.ПарольПользователяХранилища; ВерсияПлатформы = ВходящиеПараметры.ВерсияПлатформы; + ИмяРасширения = ВходящиеПараметры.ИмяРасширения; ПутьКХранилищу = ВходящиеПараметры.ПутьКХранилищу; ПутьКРабочемуКаталогу = ВходящиеПараметры.ПутьКРабочемуКаталогу; ПутьИсполняемомуФайлуГит = ВходящиеПараметры.ПутьИсполняемомуФайлуГит; @@ -134,32 +107,20 @@ Процедура ПрочитатьПлагины(Знач НастройкаПлагинов) - ИнициализироватьУправлениеПлагинами(); - - ЛокальноеУправлениеПлагинами.ВключитьПлагины(НастройкаПлагинов.ВключенныеПлагины); - ЛокальноеУправлениеПлагинами.ВключитьПлагины(НастройкаПлагинов.ДополнительныеПлагины); - ЛокальноеУправлениеПлагинами.ОтключитьПлагины(НастройкаПлагинов.ОтключенныеПлагины); - - ИндексПодписчиков = ЛокальноеУправлениеПлагинами.ПолучитьИндексПлагинов(); + МенеджерПлагинов = Новый МенеджерПлагинов; + МенеджерПлагинов.УстановитьКаталогПлагинов(КаталогПлагинов); + МенеджерПлагинов.ЗагрузитьПлагины(); -КонецПроцедуры - -Процедура ИнициализироватьУправлениеПлагинами() - - Если ЛокальноеУправлениеПлагинами = Неопределено Тогда + МенеджерПлагинов.ВключитьПлагины(НастройкаПлагинов.ВключенныеПлагины); + МенеджерПлагинов.ВключитьПлагины(НастройкаПлагинов.ДополнительныеПлагины); + МенеджерПлагинов.ОтключитьПлагины(НастройкаПлагинов.ОтключенныеПлагины); - ЛокальноеУправлениеПлагинами = Новый УправлениеПлагинами; - ЛокальноеУправлениеПлагинами.УстановитьКаталогПлагинов(КаталогПлагинов); - ЛокальноеУправлениеПлагинами.УстановитьФайлВключенныхПлагинов(ПутьКФайлуВключенныхПлагинов); - ЛокальноеУправлениеПлагинами.ЗагрузитьПлагины(); - - КонецЕсли; + ИндексПодписчиков = МенеджерПлагинов.ПолучитьИндексПлагинов(); КонецПроцедуры Процедура ПриСозданииОбъекта() Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.batch"); - УровеньЛогаСинхронизации = Лог.Уровень(); КонецПроцедуры diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214\320\235\320\260\320\261\320\276\321\200\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214\320\235\320\260\320\261\320\276\321\200\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" new file mode 100644 index 00000000..c240d7cb --- /dev/null +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\241\320\276\320\267\320\264\320\260\321\202\320\265\320\273\321\214\320\235\320\260\320\261\320\276\321\200\320\260\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -0,0 +1,38 @@ +#Использовать logos + +Перем НаборИменКлассовПлагинов; +Перем ДоступныйИнтерфейсПлагинов; +Перем Лог; + +Функция Создать() Экспорт + + НаборПлагинов = Новый Соответствие(); + + Для каждого ИмяКлассаПлагина Из НаборИменКлассовПлагинов Цикл + + Лог.Отладка("Добавляю плагин <%1> в индекс плагинов", ИмяКлассаПлагина); + + Попытка + НовыйПлагин = Новый ПлагинСинхронизации(ИмяКлассаПлагина, ДоступныйИнтерфейсПлагинов); + Исключение + Лог.Отладка("Ошибка добавления плагина в индекс плагинов. По причине: <%1>", ОписаниеОшибки()); + Продолжить; + КонецПопытки; + + НаборПлагинов.Вставить(НовыйПлагин.Имя(), НовыйПлагин); + + КонецЦикла; + + Возврат НаборПлагинов; + +КонецФункции + +Процедура ДобавитьПлагин(Знач ИмяКласса) Экспорт + + НаборИменКлассовПлагинов.Добавить(ИмяКласса); + +КонецПроцедуры + +НаборИменКлассовПлагинов = Новый Массив(); +ДоступныйИнтерфейсПлагинов = Новый ИнтерфейсПлагинов().Интерфейс(); +Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.loader"); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" index d33c975b..aeeb2a1c 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/internal/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -80,6 +80,18 @@ КонецФункции +Процедура ПриСозданииОбъекта() + + ДополнительныйКаталогБиблиотек = ПолучитьЗначениеСистемнойНастройки("lib.additional"); + + Если ЗначениеЗаполнено(ДополнительныйКаталогБиблиотек) Тогда + КаталогЗависимостей = ДополнительныйКаталогБиблиотек; + Иначе + КаталогЗависимостей = ПолучитьЗначениеСистемнойНастройки("lib.system"); + КонецЕсли; + +КонецПроцедуры + #КонецОбласти Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync.plugins.installer"); \ No newline at end of file diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\273\320\260\320\263\320\270\320\275\320\260\320\274\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" similarity index 52% rename from "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\273\320\260\320\263\320\270\320\275\320\260\320\274\320\270.os" rename to "src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" index fb19f719..f916e104 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\320\277\321\200\320\260\320\262\320\273\320\265\320\275\320\270\320\265\320\237\320\273\320\260\320\263\320\270\320\275\320\260\320\274\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -5,8 +5,6 @@ Перем ИндексПлагинов; Перем КаталогПлагинов; -Перем ПутьКФайлуВключенныхПлагинов; -Перем КаталогЗависимостей; #Область Экспортные_методы @@ -29,9 +27,6 @@ ТекущийЗагрузчикПлагинов.ЗагрузитьПлагины(); ИндексПлагинов = ТекущийЗагрузчикПлагинов.ИндексПлагинов(); - ВключенныеПлагины = ПрочитатьВключенныеПлагины(); - ВключитьПлагины(ВключенныеПлагины); - КонецПроцедуры // Создает и возвращает новый МенеджерПодписок для текущего индекса плагинов @@ -102,6 +97,28 @@ КонецПроцедуры +Процедура ВключитьВсеПлагины() Экспорт + + Для каждого КлючЗначение Из ИндексПлагинов Цикл + + Плагин = КлючЗначение.Значение; + Плагин.Включить(); + + КонецЦикла; + +КонецПроцедуры + +Процедура ОтключитьВсеПлагины() Экспорт + + Для каждого КлючЗначение Из ИндексПлагинов Цикл + + Плагин = КлючЗначение.Значение; + Плагин.Отключить(); + + КонецЦикла; + +КонецПроцедуры + // Устанавливает каталог установки и чтения плагинов // // Параметры: @@ -111,15 +128,6 @@ КаталогПлагинов = ПутьККаталогу; КонецПроцедуры -// Устанавливает каталог для установки зависимостей пакета плагинов -// -// Параметры: -// НовыйКаталогЗависимостей - Строка - полный путь к каталогу установки зависимостей пакета плагина -// -Процедура УстановитьКаталогЗависимостей(Знач НовыйКаталогЗависимостей) Экспорт - КаталогЗависимостей = НовыйКаталогЗависимостей; -КонецПроцедуры - // Производит установку пакета плагинов из файла // // Параметры: @@ -129,8 +137,6 @@ Установщик = Новый УстановщикПлагинов(); Установщик.УстановитьКаталогПлагинов(КаталогПлагинов); - Установщик.УстановитьКаталогЗависимостей(КаталогЗависимостей); - Установщик.УстановитьФайлПлагина(ПутьКФайлуПакета); КонецПроцедуры @@ -144,8 +150,6 @@ Установщик = Новый УстановщикПлагинов(); Установщик.УстановитьКаталогПлагинов(КаталогПлагинов); - Установщик.УстановитьКаталогЗависимостей(КаталогЗависимостей); - Установщик.УстановитьПлагинПоИмени(ИмяПлагина); КонецПроцедуры @@ -163,123 +167,10 @@ КонецПроцедуры -// Устанавливает путь к файлу информации о плагинах -// -// Параметры: -// ПутьКФайлу - Строка - полный путь к файлы информации плагинах -// -Процедура УстановитьФайлВключенныхПлагинов(Знач ПутьКФайлу) Экспорт - ПутьКФайлуВключенныхПлагинов = ПутьКФайлу; -КонецПроцедуры - -// Выполняет чтение включенных плагинов из файла -// -// Возвращаемое значение: -// Соответствие - набор данных о плагина -// * ключ - строка - имя плагина -// * значение - булево - признак включенности плагина -// -Функция ПрочитатьВключенныеПлагины() Экспорт - - ВключенныеПлагины = Новый Соответствие; - - ПутьКФайлу = ПолучитьПутьКФайлуВключенныхПлагинов(); - ФайлАктивныхПлагинов= Новый Файл(ПутьКФайлу); - - Если Не ФайлАктивныхПлагинов.Существует() Тогда - Возврат ВключенныеПлагины; - КонецЕсли; - - JsonСтрока = ПрочитатьФайл(ПутьКФайлу); - - Если ПустаяСтрока(JsonСтрока) Тогда - Возврат ВключенныеПлагины; - КонецЕсли; - - ПарсерJSON = Новый ПарсерJSON(); - ДанныеФайла = ПарсерJSON.ПрочитатьJSON(JsonСтрока); - - Для каждого ДанныеПлагинаИзФайла Из ДанныеФайла Цикл - - Если Булево(ДанныеПлагинаИзФайла.Значение) Тогда - ВключенныеПлагины.Вставить(ДанныеПлагинаИзФайла.Ключ, ДанныеПлагинаИзФайла.Значение); - КонецЕсли; - - КонецЦикла; - - Возврат ВключенныеПлагины; - -КонецФункции - -// Возвращает имя файла информации о плагинах -// -// Возвращаемое значение: -// Строка - имя файла -// -Функция ИмяФайлаВключенныхПлагинов() Экспорт - - Возврат "gitsync-plugins.json"; - -КонецФункции - -// Процедура записывает активированные плагины в файл -// -Процедура ЗаписатьВключенныеПлагины() Экспорт - - ИмяФайла = ПолучитьПутьКФайлуВключенныхПлагинов(); - - КаталогФайла = Новый Файл(ИмяФайла).Путь; - ФС.ОбеспечитьКаталог(КаталогФайла); - - ПарсерJSON = Новый ПарсерJSON(); - ДанныеДляЗаписи = Новый Соответствие; - - Для каждого КлючЗначение Из ИндексПлагинов Цикл - - Плагин = КлючЗначение.Значение; - ДанныеДляЗаписи.Вставить(Плагин.Имя(), Плагин.Включен()); - - КонецЦикла; - - ТекстФайла = ПарсерJSON.ЗаписатьJson(ДанныеДляЗаписи); - - ЗаписатьФайл(ИмяФайла, ТекстФайла); - -КонецПроцедуры - #КонецОбласти #Область Вспомогательные_процедуры_и_функции -Функция ПолучитьПутьКФайлуВключенныхПлагинов() - - ФайлАктивныхПлагинов= Новый Файл(ПутьКФайлуВключенныхПлагинов); - - Если Не ФайлАктивныхПлагинов.Существует() Тогда - Возврат ОбъединитьПути(КаталогПлагинов, ИмяФайлаВключенныхПлагинов()); - КонецЕсли; - - Возврат ФайлАктивныхПлагинов.ПолноеИмя; - -КонецФункции - -Функция ПрочитатьФайл(Знач ИмяФайла) - - Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8); - Рез = Чтение.Прочитать(); - Чтение.Закрыть(); - - Возврат Рез; - -КонецФункции - -Процедура ЗаписатьФайл(Знач ИмяФайла, ТекстФайла) - - Запись = Новый ЗаписьТекста(ИмяФайла); - Запись.ЗаписатьСтроку(ТекстФайла); - Запись.Закрыть(); - -КонецПроцедуры Процедура ПриСозданииОбъекта(Знач ЗначениеКаталогПлагинов = Неопределено) @@ -289,14 +180,6 @@ КаталогПлагинов = ЗначениеКаталогПлагинов; КонецЕсли; - ДополнительныйКаталогБиблиотек = ПолучитьЗначениеСистемнойНастройки("lib.additional"); - - Если ЗначениеЗаполнено(ДополнительныйКаталогБиблиотек) Тогда - КаталогЗависимостей = ДополнительныйКаталогБиблиотек; - Иначе - КаталогЗависимостей = ПолучитьЗначениеСистемнойНастройки("lib.system"); - КонецЕсли; - КонецПроцедуры #КонецОбласти diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" index 81b251a3..8b2ea4b8 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\320\270.os" @@ -7,6 +7,7 @@ #Использовать gitrunner #Использовать fs #Использовать "./internal" +#Использовать "./internal/bindata" Перем Лог; // Объект, для логирования Перем ЭтоWindows; // Булево, призная операционной системы WINDOWS @@ -17,7 +18,7 @@ Перем ГитРепозиторийСохр; // Объект.ГитРепозиторий // Определяем мин количество коммитов между разницей версии уже в git и в хранилище // для случаев, когда пересоздали хранилище и в гите находится версия 1234, а в хранилище 4, -// тогда вызываем исключение если разница в коммитах больше чем на эту велечину. +// тогда вызываем исключение если разница в коммитах больше чем на эту величину. Перем МинимальнаяРазницаМеждуКоммитамиНовогоХранилища; Перем ОбработчикПодписок; // Объект.МенеджерПодписок @@ -26,6 +27,7 @@ Перем РабочийКонфигуратор; // Объект.УправлениеКонфигуратором Перем ПутьКИсполняемомуФайлуGit; // Строка, полный путь к исполняемому файлу git Перем ИмяРасширения; // Строка, Имя расширения для синхронизации +Перем КонтекстВыполнения; // Структура, Ключи СтрокаСоединения, Пользователь, Пароль /////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -92,34 +94,27 @@ // ИмяРасширения - Строка - имя расширения для выгрузки // Функция ПолучитьИмяРасширения() Экспорт - Возврат ИмяРасширения -КонецФункции - -// Устанавливает работу с хранилищем расширения -// -// Параметры: -// ПарамЭтоРасширение - Булево - признак работы с расширением. -// -// Возвращаемое значение: -// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> -// -Функция РежимРаботыСХранилищемРасширения(Знач ПарамЭтоРасширение) Экспорт - ЭтоРасширение = ПарамЭтоРасширение; - Возврат ЭтотОбъект; + Возврат ИмяРасширения КонецФункции // Устанавливает набор подписчиков // // Параметры: -// НовыйИндексПодписчиков - Соответствие - набор подписчиков +// ПИндексПодписчиков - Соответствие - набор подписчиков // * ключ - Строка - имя подписчика // * значение - Объект - ссылка на произвольный объект +// ППараметрыПодписок - Соответствие - набор параметров для подписчиков // Возвращаемое значение: // Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> // -Функция ПодпискиНаСобытия(Знач НовыйИндексПодписчиков) Экспорт +Функция ПодпискиНаСобытия(Знач ПИндексПодписчиков, Знач ППараметрыПодписок = Неопределено) Экспорт - УстановитьОбработчикПодписок(НовыйИндексПодписчиков); + УстановитьОбработчикПодписок(ПИндексПодписчиков); + + Если Не ППараметрыПодписок = Неопределено Тогда + ПараметрыПодписокНаСобытия(ППараметрыПодписок); + КонецЕсли; + Возврат ЭтотОбъект; КонецФункции @@ -231,6 +226,27 @@ КонецФункции +// Устанавливает контекст выполнения синхронизации +// +// Параметры: +// СтрокаСоединения - Строка - строка соединения с информационной базой +// Пользователь - Строка - пользователь информационной базы +// Пароль - Строка - пароль информационной базы +// +// Возвращаемое значение: +// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> +// +Функция УстановитьКонтекст(Знач СтрокаСоединения, Знач Пользователь, Знач Пароль) Экспорт + + КонтекстВыполнения.СтрокаСоединения = СтрокаСоединения; + КонтекстВыполнения.Пользователь = Пользователь; + КонтекстВыполнения.Пароль = Пароль; + + ПоказатьКонтекстВРежимеОтладки(); + + Возврат ЭтотОбъект; +КонецФункции + // Основная функция синхронизации. // Перемещает в git набор коммитов хранилища 1С // @@ -248,12 +264,12 @@ ХранилищеКонфигурации = ПолучитьХранилищеКонфигурации(ПутьКХранилищу); - ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ПутьКХранилищу); - - ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии); - ТекущаяВерсия = НомерСинхронизированнойВерсии(КаталогРабочейКопии); + ТаблицаИсторииХранилища = ПрочитатьИзХранилищаИсториюКоммитовСАвторами(ПутьКХранилищу, ТекущаяВерсия); + + ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(ТаблицаИсторииХранилища, КаталогРабочейКопии); + Лог.Информация("Номер синхронизированной версии: " + ТекущаяВерсия); СледующаяВерсия = ТекущаяВерсия + 1; @@ -356,7 +372,7 @@ КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог(); - Лог.Отладка("Каталог выгрузки <%1> для версии <%2>", КаталогВыгрузки , НомерВерсии); + Лог.Отладка("Каталог выгрузки <%1> для версии <%2>", КаталогВыгрузки, НомерВерсии); ОбработчикПодписок.ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор, КаталогРабочейКопии, @@ -451,13 +467,13 @@ Исключение // проверим текст ошибки, если текст содержит информацию о необходимости конвертировать // тогда выполним конвертацию и повторно попытаемся загрузить файл - ТекстОшибки = ВРег(ХранилищеКонфигурации.ПолучитьВыводКоманды()); - Если Найти(ТекстОшибки, Врег("Не обнаружено свободной лицензии!")) - ИЛИ Найти(ТекстОшибки, Врег("Не найдена лицензия.")) Тогда + ТекстОшибки = ХранилищеКонфигурации.ПолучитьВыводКоманды(); + Если Найти(ВРег(ТекстОшибки), Врег("Не обнаружено свободной лицензии!")) + ИЛИ Найти(ВРег(ТекстОшибки), Врег("Не найдена лицензия.")) Тогда ПериодОжидания = 10000; Лог.Ошибка(ТекстОшибки); - Лог.Информация("Повторное подключение через 10сек. Осталось попыток: <%1>", КоличествоЦикловОжиданияЛицензии); + Лог.Информация("Повторное подключение через 10 сек. Осталось попыток: <%1>", КоличествоЦикловОжиданияЛицензии); Приостановить(ПериодОжидания); Иначе @@ -494,13 +510,14 @@ Если СтандартнаяОбработка Тогда - Параметры = Конфигуратор.ПолучитьПараметрыЗапуска(); - Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1", КаталогВыгрузки)); - Если ИмяРасширения <> "" Тогда - Параметры.Добавить(СтрШаблон("-Extension %1", ИмяРасширения)); - КонецЕсли; Попытка - Конфигуратор.ВыполнитьКоманду(Параметры); + + Если НЕ ПустаяСтрока(ИмяРасширения) Тогда + Конфигуратор.ВыгрузитьРасширениеВФайлы(КаталогВыгрузки, ИмяРасширения); + Иначе + Конфигуратор.ВыгрузитьКонфигурациюВФайлы(КаталогВыгрузки); + КонецЕсли; + Исключение ОписаниеОшибки = ОписаниеОшибки(); Если Не ЭтоПропускаемаяОшибка(ОписаниеОшибки) Тогда @@ -510,34 +527,12 @@ КонецЕсли; КонецПопытки; - КонецЕсли; + КонецЕсли; ОбработчикПодписок.ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки); КонецПроцедуры -Функция МассивИсключаемыхОшибок() - - Массив = Новый Массив; - Массив.Добавить("Конфигурация содержит объекты метаданных, длина имен которых превышает 80 символов!"); - - Возврат Массив; -КонецФункции - -Функция ЭтоПропускаемаяОшибка(Знач ОписаниеОшибки) - - МассивИсключаемыхОшибок = МассивИсключаемыхОшибок(); - - Для Каждого ИсключаемаяОшибка Из МассивИсключаемыхОшибок Цикл - - Если СтрНайти(ОписаниеОшибки, ИсключаемаяОшибка) > 0 Тогда - Возврат Истина; - КонецЕсли; - - КонецЦикла; - Возврат Ложь; -КонецФункции - #КонецОбласти #Область Функциональность_очистки_каталога_рабочей_копии @@ -557,8 +552,8 @@ СоответствиеИменФайловДляПропуска.Вставить(ИмяФайлаВерсииХранилища(), Истина); // Номер версии, может использоватся для синхронизации с хранилищем. ОбработчикПодписок.ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, - СоответствиеИменФайловДляПропуска, - СтандартнаяОбработка); + СоответствиеИменФайловДляПропуска, + СтандартнаяОбработка); Если СтандартнаяОбработка Тогда @@ -630,7 +625,7 @@ Если СтандартнаяОбработка Тогда ПереместитьВКаталогРабочейКопииСтандартнаяОбработка(КаталогРабочейКопии, - КаталогВыгрузки); + КаталогВыгрузки); КонецЕсли; @@ -646,7 +641,7 @@ // КаталогВыгрузки - Строка - полный путь к каталогу выгрузки // Процедура ПереместитьВКаталогРабочейКопииСтандартнаяОбработка(Знач КаталогРабочейКопии, - Знач КаталогВыгрузки) + Знач КаталогВыгрузки) СписокФайлов = НайтиФайлы(КаталогВыгрузки, ПолучитьМаскуВсеФайлы(), Истина); Лог.Отладка("Найдено файлов выгрузки: %1 шт.", СписокФайлов.Количество()); @@ -718,6 +713,13 @@ КаталогСборки = ВременныеФайлы.СоздатьКаталог(); УправлениеКонфигуратором.КаталогСборки(КаталогСборки); + Если ЗначениеЗаполнено(КонтекстВыполнения.СтрокаСоединения) Тогда + + Лог.Отладка("Для синхронизации используется база <%1>", КонтекстВыполнения.СтрокаСоединения); + УправлениеКонфигуратором.УстановитьКонтекст(КонтекстВыполнения.СтрокаСоединения, КонтекстВыполнения.Пользователь, КонтекстВыполнения.Пароль); + + КонецЕсли; + Если ЗначениеЗаполнено(ТекущийПутьКПлатформе) Тогда Если Не ФС.ФайлСуществует(ТекущийПутьКПлатформе) Тогда @@ -730,7 +732,7 @@ Лог.Информация("Используется путь к платформе 1С <%1>", ТекущийПутьКПлатформе); Иначе УправлениеКонфигуратором.ИспользоватьВерсиюПлатформы(ТекущаяВерсияПлатформы); - Лог.Отладка("Используется платформа 1С версии <%1>", ТекущийПутьКПлатформе); + Лог.Отладка("Используется платформа 1С версии <%1>", ТекущаяВерсияПлатформы); КонецЕсли; Возврат УправлениеКонфигуратором; @@ -836,6 +838,7 @@ // // Параметры: // ПутьКХранилищу - Строка - путь к хранилищу 1С +// НачальнаяВерсия - Число - номер начальной версии хранилища // // Возвращаемое значение: // ТаблицаВерсий - ТаблицаЗначений - инициализированная таблица с колонками: @@ -847,13 +850,17 @@ // * ГУИД_Автора - Строка - уникальный идентификатор автора версии // * ПредставлениеАвтора - Строка - представление автора для коммита в git // -Функция ПрочитатьТаблицуИсторииХранилища(Знач ПутьКХранилищу) Экспорт +Функция ПрочитатьТаблицуИсторииХранилища(Знач ПутьКХранилищу, Знач НачальнаяВерсия = 1) Экспорт СтандартнаяОбработка = Истина; + Если НачальнаяВерсия = Неопределено Тогда + НачальнаяВерсия = 1; + КонецЕсли; + ТаблицаВерсий = НоваяТаблицаИсторииВерсий(); - ОбработчикПодписок.ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, СтандартнаяОбработка); + ОбработчикПодписок.ПриПолученииТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу, НачальнаяВерсия, СтандартнаяОбработка); Если СтандартнаяОбработка Тогда @@ -861,6 +868,12 @@ Если ХранилищеКонфигурации = Неопределено Тогда ХранилищеКонфигурации = ПолучитьХранилищеКонфигурации(ПутьКХранилищу); КонецЕсли; + + Если Не ХранилищеКонфигурации.ЧтениеХранилищаВыполнено() Тогда + + ХранилищеКонфигурации.ПрочитатьХранилище(НачальнаяВерсия); + + КонецЕсли; ТаблицаВерсийХранилища = ХранилищеКонфигурации.ПолучитьТаблицуВерсий(); @@ -903,6 +916,7 @@ // // Параметры: // ПутьКХранилищу - Строка - путь к хранилищу 1С +// НачальнаяВерсия - Число - номер начальной версии хранилища // // Возвращаемое значение: // ТаблицаЗначений - таблица пользователей с колонками @@ -910,12 +924,16 @@ // * ПредставлениеАвтора - Строка - представление автора для коммита в git // * ГУИД_Автора - Строка - уникальный идентификатор автора версии // -Функция ПрочитатьТаблицуПользователейХранилища(Знач ПутьКХранилищу) Экспорт +Функция ПрочитатьТаблицуПользователейХранилища(Знач ПутьКХранилищу, Знач НачальнаяВерсия = 1) Экспорт СтандартнаяОбработка = Истина; ТаблицаПользователей = НоваяТаблицаПользователейХранилища(); + Если НачальнаяВерсия = Неопределено Тогда + НачальнаяВерсия = 1; + КонецЕсли; + ОбработчикПодписок.ПриПолученииТаблицыПользователей(ТаблицаПользователей, ПутьКХранилищу, СтандартнаяОбработка); Если СтандартнаяОбработка Тогда @@ -923,7 +941,13 @@ Если ХранилищеКонфигурации = Неопределено Тогда ХранилищеКонфигурации = ПолучитьХранилищеКонфигурации(ПутьКХранилищу); КонецЕсли; + + Если Не ХранилищеКонфигурации.ЧтениеХранилищаВыполнено() Тогда + + ХранилищеКонфигурации.ПрочитатьХранилище(НачальнаяВерсия); + КонецЕсли; + МассивАвторовХранилища = ХранилищеКонфигурации.ПолучитьАвторов(); Для Каждого Автор Из МассивАвторовХранилища Цикл @@ -946,6 +970,7 @@ // // Параметры: // ПутьКХранилищу - Строка - путь к хранилищу 1С +// ТекущаяВерсия - Число - номер версии откуда начинать чтение // // Возвращаемое значение: // ТаблицаВерсий - ТаблицаЗначений - инициализированная таблица с колонками: @@ -957,10 +982,10 @@ // * ГУИД_Автора - Строка - уникальный идентификатор автора версии // * ПредставлениеАвтора - Строка - представление автора для коммита в git // -Функция ПрочитатьИзХранилищаИсториюКоммитовСАвторами(Знач ПутьКХранилищу) Экспорт +Функция ПрочитатьИзХранилищаИсториюКоммитовСАвторами(Знач ПутьКХранилищу, Знач НачальнаяВерсия = 1) Экспорт - ТаблицаВерсий = ПрочитатьТаблицуИсторииХранилища(ПутьКХранилищу); - ТаблицаПользователей = ПрочитатьТаблицуПользователейХранилища(ПутьКХранилищу); + ТаблицаВерсий = ПрочитатьТаблицуИсторииХранилища(ПутьКХранилищу, НачальнаяВерсия); + ТаблицаПользователей = ПрочитатьТаблицуПользователейХранилища(ПутьКХранилищу, НачальнаяВерсия); ДополнитьТаблицуВерсийИменамиАвторов(ТаблицаВерсий, ТаблицаПользователей); ТаблицаВерсий.Сортировать("НомерВерсии"); @@ -976,17 +1001,19 @@ // КаталогРабочейКопии - Строка - путь к каталогу рабочей копии git // Процедура ДополнитьТаблицуХранилищаИнформациейОСигнатуреПользователяВГит(Знач ТаблицаХранилища, - Знач КаталогРабочейКопии) Экспорт + Знач КаталогРабочейКопии) Экспорт ПутьКФайлуСопоставления = ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаАвторов()); - ТаблицаСопоставления = ПрочитатьФайлАвторовГитВТаблицуПользователей(ПутьКФайлуСопоставления); + + ТаблицаСопоставления = ПолучитьТаблицуАвторов(ПутьКФайлуСопоставления); + Для Каждого СтрокаТаблицы Из ТаблицаХранилища Цикл СтрокаПользователя = ТаблицаСопоставления.Найти(СтрокаТаблицы.Автор, "Автор"); Если СтрокаПользователя = Неопределено Тогда ПредставлениеАвтора = СтрШаблон("%1 <%1@%2>", СтрокаТаблицы.Автор, Строка(ДоменПочтыДляGit())); Иначе - ПредставлениеАвтора = строкаПользователя.ПредставлениеАвтора; + ПредставлениеАвтора = СтрокаПользователя.ПредставлениеАвтора; КонецЕсли; СтрокаТаблицы.ПредставлениеАвтора = ПредставлениеАвтора; @@ -1026,7 +1053,7 @@ КонецПроцедуры -// Читает файл авторов и возвращает таблицу пользователей +// Получает таблицу авторов из файла // // Параметры: // ПутьКФайлуАвторов - Строка - путь к файлу авторов @@ -1035,52 +1062,68 @@ // ТаблицаЗначений - таблица пользователей с колонками // * Автор - Строка - имя автора версии в хранилище // * ПредставлениеАвтора - Строка - представление автора для коммита в git -// * ГУИД_Автора - Строка - уникальный идентификатор автора версии // -Функция ПрочитатьФайлАвторовГитВТаблицуПользователей(Знач ПутьКФайлуАвторов) Экспорт +Функция ПолучитьТаблицуАвторов(Знач ПутьКФайлуАвторов) Экспорт - Если НЕ ЗначениеЗаполнено(ПутьКФайлуАвторов) Тогда - Возврат Неопределено; + СтандартнаяОбработка = Истина; + + ТаблицаАвторов = НоваяТаблицаАвторов(); + + ОбработчикПодписок.ПриПолученииТаблицыАвторов(ПутьКФайлуАвторов, ТаблицаАвторов, СтандартнаяОбработка); + + Если СтандартнаяОбработка Тогда + ПрочитатьФайлАвторов(ПутьКФайлуАвторов, ТаблицаАвторов); КонецЕсли; + ОбработчикПодписок.ПослеПолученияТаблицыАвторов(ПутьКФайлуАвторов, ТаблицаАвторов); + + Возврат ТаблицаАвторов; + +КонецФункции + +Процедура ПрочитатьФайлАвторов(ПутьКФайлуАвторов, ТаблицаАвторов) + + Если НЕ ЗначениеЗаполнено(ПутьКФайлуАвторов) Тогда + Возврат; + КонецЕсли; + Файл = Новый Файл(ПутьКФайлуАвторов); Если Не Файл.Существует() Тогда - Возврат НоваяТаблицаПользователейХранилища(); + Возврат; КонецЕсли; + + ТекстовыйФайл = Новый ЧтениеТекста(ПутьКФайлуАвторов, "utf-8"); + ТекстФайла = ТекстовыйФайл.Прочитать(); - Пользователи = НоваяТаблицаПользователейХранилища(); - - Попытка - ТекстовыйФайл = Новый ЧтениеТекста(ПутьКФайлуАвторов, "utf-8"); - СтрокаФайла = ""; - Пока СтрокаФайла <> Неопределено Цикл - СтрокаФайла = ТекстовыйФайл.ПрочитатьСтроку(); - Индекс = Найти(СтрокаФайла, "="); - Если Индекс > 0 Тогда - - Ключ = Лев(СтрокаФайла, Индекс - 1); - АвторПредставление = Сред(СтрокаФайла, Индекс + 1); - - НоваяСтрока = Пользователи.Добавить(); - НоваяСтрока.ПредставлениеАвтора = АвторПредставление; - НоваяСтрока.Автор = Ключ; - КонецЕсли; - КонецЦикла; - - Исключение - Если ТекстовыйФайл <> Неопределено Тогда - ОсвободитьОбъект(ТекстовыйФайл); + МассивСтрокФайла = СтрРазделить(ТекстФайла, Символы.ПС, Ложь); + + Для каждого СтрокаФайла Из МассивСтрокФайла Цикл + + Если СтрНачинаетсяС(СокрЛП(СтрокаФайла), "//") Тогда + Продолжить; КонецЕсли; - ВызватьИсключение; - КонецПопытки; - + + МассивКлючей = СтрРазделить(СтрокаФайла, "=", Ложь); + + Если Не МассивКлючей.Количество() = 2 Тогда + Лог.Предупреждение("Ошибка чтения файла авторов строка <%1>", СтрокаФайла); + Продолжить; + КонецЕсли; + + НоваяСтрока = ТаблицаАвторов.Добавить(); + НоваяСтрока.Автор = СокрЛП(МассивКлючей[0]); + НоваяСтрока.ПредставлениеАвтора = СокрЛП(МассивКлючей[1]); + + КонецЦикла; + + ТекстовыйФайл.Закрыть(); + Если ТекстовыйФайл <> Неопределено Тогда ОсвободитьОбъект(ТекстовыйФайл); КонецЕсли; - - Возврат Пользователи; - -КонецФункции + +КонецПроцедуры + // Наполняет каталог рабочей копии служебными данными // @@ -1206,13 +1249,34 @@ КонецПроцедуры +Функция МассивИсключаемыхОшибок() + + Массив = Новый Массив; + Массив.Добавить("Конфигурация содержит объекты метаданных, длина имен которых превышает 80 символов!"); + + Возврат Массив; +КонецФункции + +Функция ЭтоПропускаемаяОшибка(Знач ОписаниеОшибки) + + МассивИсключаемыхОшибок = МассивИсключаемыхОшибок(); + + Для Каждого ИсключаемаяОшибка Из МассивИсключаемыхОшибок Цикл + + Если СтрНайти(ОписаниеОшибки, ИсключаемаяОшибка) > 0 Тогда + Возврат Истина; + КонецЕсли; + + КонецЦикла; + Возврат Ложь; +КонецФункции + Процедура СоздатьРасширениеВБазе(УправлениеКонфигуратором) Параметры = УправлениеКонфигуратором.ПолучитьПараметрыЗапуска(); - ФайлИсточника = Новый Файл(ТекущийСценарий().Источник); - ПутьКИнструменту = Новый Файл(ОбъединитьПути(ФайлИсточника.Путь, "../../../")).ПолноеИмя; - ПутьКШаблонуРасширения = ОбъединитьПути(ПутьКИнструменту, "./templates/temp.cfe"); - Параметры.Добавить("/LoadCfg " + """" + ПутьКШаблонуРасширения + """"); + ЗагрузчикЗапакованныхФайловGitsync = Новый ЗагрузчикЗапакованныхФайловGitsync; + ПутьКШаблонуРасширения = ЗагрузчикЗапакованныхФайловGitsync.ПолучитьПутьКФайлу("tempExtension.cfe"); + Параметры.Добавить(СтрШаблон("/LoadCfg ""%1""", ПутьКШаблонуРасширения)); Параметры.Добавить(СтрШаблон("-Extension %1", ИмяРасширения)); УправлениеКонфигуратором.ВыполнитьКоманду(Параметры); @@ -1235,7 +1299,6 @@ КонецЕсли; Логирование.ПолучитьЛог("oscript.lib.v8storage").УстановитьУровень(Лог.Уровень()); - Сообщить("Пользователь " + АвторизацияВХранилище.ПользовательХранилища); ПроверитьПараметрыДоступаКХранилищу(); МенеджерХранилищаКонфигурации.УстановитьПараметрыАвторизации(АвторизацияВХранилище.ПользовательХранилища, АвторизацияВХранилище.ПарольХранилища); МенеджерХранилищаКонфигурации.УстановитьПутьКХранилищу(ПутьКХранилищу); @@ -1255,6 +1318,16 @@ КонецФункции +Функция НоваяТаблицаАвторов() + + Таблица = Новый ТаблицаЗначений; + Таблица.Колонки.Добавить("Автор"); + Таблица.Колонки.Добавить("ПредставлениеАвтора"); + + Возврат Таблица; + +КонецФункции + Функция ПодготовитьФайлКоммита(Знач Комментарий) ИмяФайлаКомментария = ВременныеФайлы.СоздатьФайл("txt"); @@ -1437,7 +1510,6 @@ Процедура УстановитьОбработчикПодписок(НовыйИндексПодписчиков) ОбработчикПодписок.УстановитьПодписчиков(НовыйИндексПодписчиков); - ОбработчикПодписок.ПриАктивизации(ЭтотОбъект); КонецПроцедуры @@ -1491,6 +1563,12 @@ КонецПроцедуры +Процедура ПоказатьКонтекстВРежимеОтладки() + Лог.Отладка("СтрокаСоединения <%1>", КонтекстВыполнения.СтрокаСоединения); + Лог.Отладка("Пользователь <%1>", КонтекстВыполнения.Пользователь); + Лог.Отладка(?(ПустаяСтрока(КонтекстВыполнения.Пароль), "Пароль не задан", СтрШаблон("Задан пароль <%1>", КонтекстВыполнения.Пароль))); +КонецПроцедуры + Функция ФорматДвузначноеЧисло(ЗначениеЧисло) ЧислоСтрокой = Строка(ЗначениеЧисло); Если СтрДлина(ЧислоСтрокой) < 2 Тогда @@ -1520,6 +1598,8 @@ ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0; ТекущаяВерсияПлатформы = "8.3"; + + КонтекстВыполнения = Новый Структура("СтрокаСоединения, Пользователь, Пароль", "", "", ""); КонецПроцедуры diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" index af3ef44e..9befb0f0 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\320\272\320\265\321\202\320\275\320\260\321\217\320\241\320\270\320\275\321\205\321\200\320\276\320\275\320\270\320\267\320\260\321\206\320\270\321\217.os" @@ -11,8 +11,8 @@ /////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС -Перем ДоменПочтыДляGitПоУмолчанию Экспорт; // Строка, домен пользователей по умолчанию -Перем ТекущаяВерсияПлатформы Экспорт; // Строка, используемая версия 1С.Предприятие +Перем ДоменПочтыДляGitПоУмолчанию; // Строка, домен пользователей по умолчанию +Перем ТекущаяВерсияПлатформы; // Строка, используемая версия 1С.Предприятие Перем ТаймерПовторения; Перем ПутьКФайлуНастроек; @@ -21,7 +21,8 @@ Перем ПутьКВременномуКаталогу; Перем ИндексРепозиториев; -Перем Параметры; +Перем НастройкиПоУмолчанию; +Перем РепозиторииСинхронизации; #Область Публичное_API @@ -134,19 +135,43 @@ КонецФункции -// Устанавливает путь к файлу настроек пакетной синхронизации +// Устанавливает путь к платформе 1С // // Параметры: -// НовыйПутьКФайлуНастроек - Строка - путь к настроек пакетной синхронизации +// НовыйПутьКПлатформе - Строка - путь к исполняемому файлу платформы 1С.Предприятие // // Возвращаемое значение: // Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> // -Функция УстановитьНастройки(НовыйПутьКФайлуНастроек) Экспорт - ПутьКФайлуНастроек = НовыйПутьКФайлуНастроек; +Функция ПутьКПлатформе(Знач НовыйПутьКПлатформе) Экспорт + + ТекущийПутьКПлатформе = НовыйПутьКПлатформе; Возврат ЭтотОбъект; + КонецФункции +// Читает настройки пакетной синхронизации из соответствия +// +// Параметры: +// НастройкиСинхронизации - Соответствие - набор настроек для пакетной синхронизации +// +Процедура ПрочитатьНастройки(Знач НастройкиСинхронизации) Экспорт + + Лог.Отладка("Количество настроек <%1>", НастройкиСинхронизации.Количество()); + + КонструкторПараметров = КонструкторПараметровПакетнойСинхронизации(); + КонструкторПараметров.ИзСоответствия(НастройкиСинхронизации); + + Параметры = КонструкторПараметров.ВСтруктуру(); + + НастройкиПоУмолчанию = Параметры.НастройкиПоУмолчанию; + + ДополнитьНастройкиПоУмолчания(); + + РепозиторииСинхронизации = Параметры.Репозитории; + +КонецПроцедуры + // Устанавливает таймер повторения пакетной синхронизации // // Параметры: @@ -173,23 +198,12 @@ Возврат ЭтотОбъект; КонецФункции -// Устанавливает путь к файлу включенных плагинов -// -// Параметры: -// НовыйПутьКФайлуВключенныхПлагинов - Строка - путь к файлу включенных плагинов -// -// Возвращаемое значение: -// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> -// -Функция ФайлВключенныхПлагинов(Знач НовыйПутьКФайлуВключенныхПлагинов) Экспорт - ПутьКФайлуВключенныхПлагинов = НовыйПутьКФайлуВключенныхПлагинов; - Возврат ЭтотОбъект; -КонецФункции - // Выполняет пакетную синхронизацию // -Процедура ВыполнитьСинхронизацию() Экспорт +Процедура ВыполнитьСинхронизацию(Знач КоличествоПотоков = 1) Экспорт + ПодготовитьИндексРепозиториев(); + Пока Истина Цикл ПакетнаяСинхронизация(); @@ -209,87 +223,107 @@ КонецПроцедуры -#КонецОбласти +// Выполняет пакетную синхронизацию +// +Процедура ВыполнитьСинхронизациюПоНастройке(Знач ИмяНастройкиСинхронизации) Экспорт + + ПодготовитьИндексРепозиториев(); -Процедура ПрочитатьФайлНастроек() + Пока Истина Цикл - МенеджерПараметров = Новый МенеджерПараметров(); - МенеджерПараметров.УстановитьФайлПараметров(ПутьКФайлуНастроек); - МенеджерПараметров.ИспользоватьПровайдерJSON(); - МенеджерПараметров.ИспользоватьПровайдерYAML(); - МенеджерПараметров.КонструкторПараметров(ЭтотОбъект); - Лог.Отладка("Чтение файла настроек начато"); - МенеджерПараметров.Прочитать(); - Лог.Отладка("Чтение файла настроек завершено"); + РепоСинхронизации = ИндексРепозиториев[ИмяНастройкиСинхронизации]; + + Если РепоСинхронизации = Неопределено Тогда + Лог.Информация("Не найдена или отключена настройка синхронизации <%1>", ИмяНастройкиСинхронизации); + Прервать; + КонецЕсли; -КонецПроцедуры + Лог.Информация("Начата синхронизация с репозиторием <%1> ", ИмяНастройкиСинхронизации); -#Область Интерфейс_конструктора_параметров + РепоСинхронизации.Синхронизировать(); -Функция Параметры() Экспорт - Возврат Параметры; -КонецФункции + Если ТаймерПовторения <= 0 Тогда + + Прервать; + + Иначе + + Лог.Информация("Ожидаем <%1> секунд перед новым циклом", ТаймерПовторения); + Приостановить(ТаймерПовторения * 1000); + + КонецЕсли; + + КонецЦикла; -Процедура УстановитьПараметры(Знач ВходящиеПараметры) Экспорт - Параметры = ВходящиеПараметры; КонецПроцедуры -Процедура ОписаниеПараметров(Знач Конструктор) Экспорт +#КонецОбласти + +#Область Интерфейс_конструктора_параметров - ПараметрыПлагины = Конструктор.НовыеПараметры(); +Функция КонструкторОбщихПараметров() + + ПараметрыПлагины = Новый КонструкторПараметров(); ПараметрыПлагины.ПолеМассив("ВключенныеПлагины enable", Тип("Строка")) .ПолеМассив("ОтключенныеПлагины disable", Тип("Строка")) + .ПолеМассив("ДополнительныеПлагины extra additional more", Тип("Строка")) ; - ПараметрыНастроекПлагинов = Конструктор.НовыеПараметры(); + ПараметрыНастроекПлагинов = Новый КонструкторПараметров(); ПараметрыНастроекПлагинов.ПроизвольныеПоля(); - ГлобальныеПараметры = Конструктор.НовыеПараметры(); - ГлобальныеПараметры.ПолеСтрока("ПользовательХранилища storage-user user", АвторизацияВХранилище.ПользовательХранилища) - .ПолеСтрока("ПарольПользователяХранилища storage-pwd storage-password password pwd", АвторизацияВХранилище.ПарольХранилища) - .ПолеСтрока("ПутьИсполняемомуФайлуГит git-path git", ПутьКИсполняемомуФайлуGit) - .ПолеСтрока("ПутьКВременномуКаталогу temp-dir tempdir temp", ПутьКВременномуКаталогу) - .ПолеСтрока("ВерсияПлатформы v8version v8", ТекущаяВерсияПлатформы) - .ПолеСтрока("ДоменПочтыПоУмолчанию domain-email email", ДоменПочтыДляGitПоУмолчанию) - .ПолеЧисло("КоличествоЦикловОжиданияЛицензии lic-try-count", КоличествоЦикловОжиданияЛицензииПоУмолчанию) + КонструкторПараметров = Новый КонструкторПараметров(); + + КонструкторПараметров.ПолеСтрока("ПользовательХранилища storage-user user") + .ПолеСтрока("ПарольПользователяХранилища storage-pwd storage-password password pwd") + .ПолеСтрока("ПутьИсполняемомуФайлуГит git-path git") + .ПолеСтрока("ПутьКВременномуКаталогу temp-dir tempdir temp") + .ПолеСтрока("ВерсияПлатформы v8version v8") + .ПолеСтрока("ДоменПочтыПоУмолчанию domain-email email") + .ПолеЧисло("КоличествоЦикловОжиданияЛицензии lic-try-count") .ПолеОбъект("Плагины plugins", ПараметрыПлагины) .ПолеОбъект("НастройкиПлагинов plugins-config flags", ПараметрыНастроекПлагинов) ; - ПараметрыПлагиныРепозитория = ПараметрыПлагины.Скопировать(); - ПараметрыПлагиныРепозитория.ПолеМассив("ДополнительныеПлагины extra additional more", Тип("Строка")); + Возврат КонструкторПараметров; - ПараметрыРепозитория = Конструктор.НовыеПараметры(); - ПараметрыРепозитория.ПолеБулево("Отключено disable", Ложь) +КонецФункции + +Функция КонструкторПараметровРепозитория() + + КонструкторПараметров = КонструкторОбщихПараметров(); + + КонструкторПараметров.ПолеБулево("Отключено disable", Ложь) .ПолеСтрока("Наименование storage-name name") .ПолеСтрока("ПутьКХранилищу storage-path path") .ПолеСтрока("ПутьКРабочемуКаталогу work-dir git-local-path dir") - // Стандартные поля - .ПолеСтрока("ПользовательХранилища storage-user user") - .ПолеСтрока("ПарольПользователяХранилища storage-pwd storage-password password pass") - .ПолеСтрока("ПутьИсполняемомуФайлуГит git-path git") - .ПолеСтрока("ПутьКВременномуКаталогу temp-dir tempdir temp") - .ПолеСтрока("ВерсияПлатформы v8version v8") - .ПолеСтрока("ДоменПочтыПоУмолчанию domain-email email") - .ПолеЧисло("КоличествоЦикловОжиданияЛицензии lic-try-count", КоличествоЦикловОжиданияЛицензииПоУмолчанию) - .ПолеОбъект("Плагины plugins", ПараметрыПлагиныРепозитория) - .ПолеОбъект("НастройкиПлагинов plugins-config flags", ПараметрыНастроекПлагинов) + .ПолеСтрока("ИмяРасширения extention") ; - Конструктор.ПолеОбъект("НастройкиПоУмолчанию globals default", ГлобальныеПараметры) + Возврат КонструкторПараметров; + +КонецФункции + +Функция КонструкторПараметровПакетнойСинхронизации() Экспорт + + КонструкторПараметров = Новый КонструкторПараметров(); + + ОбщиеПараметры = КонструкторОбщихПараметров(); + ПараметрыРепозитория = КонструкторПараметровРепозитория(); + + КонструкторПараметров.ПолеОбъект("НастройкиПоУмолчанию globals default", ОбщиеПараметры) .ПолеМассив("Репозитории repositories", ПараметрыРепозитория) ; + + Возврат КонструкторПараметров; -КонецПроцедуры +КонецФункции + #КонецОбласти Процедура ПакетнаяСинхронизация() - ПрочитатьФайлНастроек(); - - ПодготовитьИндексРепозиториев(); - Лог.Информация("Начата пакетная синхронизация с <%1> репозиториями", ИндексРепозиториев.Количество()); Для каждого КлючЗначение Из ИндексРепозиториев Цикл @@ -303,34 +337,21 @@ Процедура ПодготовитьИндексРепозиториев() - Лог.Отладка("Готовлю индекс для <%1> репозиториев", Параметры.Репозитории.Количество()); - Для каждого ПараметрыРепозитория Из Параметры.Репозитории Цикл + ИндексРепозиториев = Новый Соответствие(); - РепоСинхронизации = ИндексРепозиториев[ПараметрыРепозитория.Наименование]; - ОтключенныйРепозиторий = ПараметрыРепозитория.Отключено; + Лог.Отладка("Готовлю индекс для <%1> репозиториев", РепозиторииСинхронизации.Количество()); + Для каждого ПараметрыРепозитория Из РепозиторииСинхронизации Цикл - Если ОтключенныйРепозиторий - И НЕ РепоСинхронизации = Неопределено Тогда - ИндексРепозиториев.Удалить(РепоСинхронизации); - КонецЕсли; - Если ОтключенныйРепозиторий Тогда - Продолжить; - КонецЕсли; - - Если РепоСинхронизации = Неопределено Тогда - - РепоСинхронизации = Новый РепозиторийСинхронизации(); - РепоСинхронизации.КаталогПлагинов(КаталогПлагинов) - .ФайлВключенныхПлагинов(ПутьКФайлуВключенныхПлагинов) - // .УровеньЛога(Лог.ПолучитьУровеньЛога()) - ; - - ИндексРепозиториев.Вставить(ПараметрыРепозитория.Наименование, РепоСинхронизации); - - КонецЕсли; + РепоСинхронизации = Новый РепозиторийСинхронизации(); + РепоСинхронизации.КаталогПлагинов(КаталогПлагинов) + // .ФайлВключенныхПлагинов(ПутьКФайлуВключенныхПлагинов) + // .УровеньЛога(Лог.ПолучитьУровеньЛога()) + ; + + ИндексРепозиториев.Вставить(ПараметрыРепозитория.Наименование, РепоСинхронизации); - ОбъединитьПараметрыРепозиторияИГлобальные(ПараметрыРепозитория); + ДополнитьПараметрыРепозитория(ПараметрыРепозитория); РепоСинхронизации.ПрочитатьПараметры(ПараметрыРепозитория); @@ -338,35 +359,69 @@ КонецПроцедуры -Процедура ОбъединитьПараметрыРепозиторияИГлобальные(ПараметрыРепозитория) +Процедура ДополнитьНастройкиПоУмолчания() + + Если ЗначениеЗаполнено(АвторизацияВХранилище.ПользовательХранилища) Тогда + НастройкиПоУмолчанию.Вставить("ПользовательХранилища", АвторизацияВХранилище.ПользовательХранилища); + НастройкиПоУмолчанию.Вставить("ПарольПользователяХранилища", АвторизацияВХранилище.ПарольПользователяХранилища); + КонецЕсли; - ГлобальныеПараметры = Параметры.НастройкиПоУмолчанию; + ЗаполнитьПриемникПриНеобходимости("ПутьИсполняемомуФайлуГит", ПутьКИсполняемомуФайлуGit, НастройкиПоУмолчанию); + ЗаполнитьПриемникПриНеобходимости("ПутьКВременномуКаталогу", ПутьКВременномуКаталогу, НастройкиПоУмолчанию); + ЗаполнитьПриемникПриНеобходимости("ВерсияПлатформы", ТекущаяВерсияПлатформы, НастройкиПоУмолчанию); + ЗаполнитьПриемникПриНеобходимости("ДоменПочтыПоУмолчанию", ДоменПочтыДляGitПоУмолчанию, НастройкиПоУмолчанию); + ЗаполнитьПриемникПриНеобходимости("КоличествоЦикловОжиданияЛицензии", КоличествоЦикловОжиданияЛицензииПоУмолчанию, НастройкиПоУмолчанию); - Для каждого ГлобальныйПараметр Из ГлобальныеПараметры Цикл - - КлючПараметра = ГлобальныйПараметр.Ключ; - ЗначениеПараметра = ГлобальныйПараметр.Значение; +КонецПроцедуры - Если Не ЗначениеЗаполнено(ЗначениеПараметра) Тогда - Продолжить; - КонецЕсли; +Процедура ДополнитьПараметрыРепозитория(ПараметрыРепозитория) - ЗначениеИзПараметровРепо = ПараметрыРепозитория[КлючПараметра]; + ГлобальныеПараметры = НастройкиПоУмолчанию; - Если КлючПараметра = "Плагины" Тогда - ОбъединитьПлагины(ЗначениеПараметра, ЗначениеИзПараметровРепо); - Продолжить; - ИначеЕсли КлючПараметра = "НастройкиПлагинов" Тогда - Лог.Отладка("Тип значения настройки плагинов <%1>", ТипЗнч(ЗначениеИзПараметровРепо)); - ОбъединитьНастройкиПлагинов(ЗначениеПараметра, ЗначениеИзПараметровРепо); - Продолжить; - КонецЕсли; + ЗаполнитьПриНеобходимости("ПользовательХранилища", ГлобальныеПараметры, ПараметрыРепозитория); + ЗаполнитьПриНеобходимости("ПарольПользователяХранилища", ГлобальныеПараметры, ПараметрыРепозитория); + ЗаполнитьПриНеобходимости("ПутьИсполняемомуФайлуГит", ГлобальныеПараметры, ПараметрыРепозитория); + ЗаполнитьПриНеобходимости("ПутьКВременномуКаталогу", ГлобальныеПараметры, ПараметрыРепозитория); + ЗаполнитьПриНеобходимости("ВерсияПлатформы", ГлобальныеПараметры, ПараметрыРепозитория); + ЗаполнитьПриНеобходимости("ДоменПочтыПоУмолчанию", ГлобальныеПараметры, ПараметрыРепозитория); + ЗаполнитьПриНеобходимости("КоличествоЦикловОжиданияЛицензии", ГлобальныеПараметры, ПараметрыРепозитория); - Если Не ЗначениеЗаполнено(ЗначениеИзПараметровРепо) Тогда - ПараметрыРепозитория.Вставить(КлючПараметра, ЗначениеПараметра); - КонецЕсли; + ОбъединитьПлагины(ГлобальныеПараметры.Плагины, ПараметрыРепозитория.Плагины); + ОбъединитьНастройкиПлагинов(ГлобальныеПараметры.НастройкиПлагинов, ПараметрыРепозитория.НастройкиПлагинов); - КонецЦикла; +КонецПроцедуры + +Процедура ЗаполнитьПриемникПриНеобходимости(Ключ, Значение, Приемник) + + Если Не ЗначениеЗаполнено(Значение) Тогда + Возврат; + КонецЕсли; + + ЗначениеПриемник = Приемник[Ключ]; + + Если ЗначениеЗаполнено(ЗначениеПриемник) Тогда + Возврат; + КонецЕсли; + + Приемник.Вставить(Ключ, Значение); + +КонецПроцедуры + +Процедура ЗаполнитьПриНеобходимости(КлючНастройки, Источник, Приемник) + + ЗначениеИсточник = Источник[КлючНастройки]; + + Если Не ЗначениеЗаполнено(ЗначениеИсточник) Тогда + Возврат; + КонецЕсли; + + ЗначениеПриемник = Приемник[КлючНастройки]; + + Если ЗначениеЗаполнено(ЗначениеПриемник) Тогда + Возврат; + КонецЕсли; + + Приемник.Вставить(КлючНастройки, ЗначениеИсточник); КонецПроцедуры @@ -388,9 +443,13 @@ КонецЕсли; ЗначениеНастройкиИзРепозитория = ПолучитьЗначениеПоКлючу(НастройкиПлагиновРепозитория, КлючНастройки); + Лог.Отладка("Ключа <%1> значение из репозитория <%2>", КлючНастройки, ЗначениеНастройкиИзРепозитория); Если ЗначениеНастройкиИзРепозитория = Неопределено Тогда + + Лог.Отладка("Устанавливаю ключ настройки <%1> в значение <%2>", КлючНастройки, ЗначениеНастройки); НастройкиПлагиновРепозитория.Вставить(КлючНастройки, ЗначениеНастройки); + КонецЕсли; КонецЦикла; diff --git a/tasks/get-plugins.os b/tasks/get-plugins.os index e75a354d..021670d0 100644 --- a/tasks/get-plugins.os +++ b/tasks/get-plugins.os @@ -46,6 +46,8 @@ ФС.ОбеспечитьКаталог(КаталогПроекта); + УдалитьФайлы(КаталогПроекта, "gitsync-plugins*.ospx"); + ФайлПриемник = ОбъединитьПути(КаталогПроекта, МассивФайлов[0].Имя); КопироватьФайл(ФайлПлагина, ФайлПриемник); diff --git a/tasks/get-v8storage.os b/tasks/get-v8storage.os deleted file mode 100644 index 7f17775c..00000000 --- a/tasks/get-v8storage.os +++ /dev/null @@ -1,92 +0,0 @@ -#Использовать gitrunner -#Использовать tempfiles -#Использовать fs - -Перем Лог; - -Процедура ПолучитьИсходники(Знач URLРепозитория, Знач Ветка, Знач Каталог) - - ГитРепозиторий = Новый ГитРепозиторий; - - ГитРепозиторий.УстановитьРабочийКаталог(Каталог); - - ГитРепозиторий.КлонироватьРепозиторий(URLРепозитория, Каталог); - ГитРепозиторий.ПерейтиВВетку(Ветка); - -КонецПроцедуры - -Процедура УстановитьПакет(Знач Каталог, ПутьКМанифестуСборки) - - // Лог.Информация("Каталог сборки <%1>", Каталог); - - // Лог.Информация("Сборка пакета библиотеки"); - // КомандаOpm = Новый Команда; - // КомандаOpm.УстановитьРабочийКаталог(Каталог); - // КомандаOpm.УстановитьКоманду("opm"); - // КомандаOpm.ДобавитьПараметр("build"); - // КомандаOpm.ДобавитьПараметр(Каталог); - // КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - // КодВозврата = КомандаOpm.Исполнить(); - - // Если КодВозврата <> 0 Тогда - // ВызватьИсключение КомандаOpm.ПолучитьВывод(); - // КонецЕсли; - - // МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); - - // Если МассивФайлов.Количество() = 0 Тогда - // ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета opm", "Не найден собранный файл пакета opm"); - // КонецЕсли; - - // ФайлПлагина = МассивФайлов[0].ПолноеИмя; - - КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); - - // ФС.ОбеспечитьКаталог(КаталогПроекта); - - // Лог.Информация("Установка в каталог проекта <%1>", КаталогПроекта); - - ФайлПлагина = ОбъединитьПути(КаталогПроекта, "templates/v8storage-0.6.6.ospx"); - - Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); - - КомандаOpm = Новый Команда; - // КомандаOpm.УстановитьРабочийКаталог(КаталогПроекта); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-l"); - КомандаOpm.ДобавитьПараметр("-f"); - КомандаOpm.ДобавитьПараметр(ФайлПлагина); - // КомандаOpm.ДобавитьПараметр("-dest"); - // КомандаOpm.ДобавитьПараметр(КаталогПроекта); - // КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); - КонецЕсли; - -КонецПроцедуры - -Процедура ПолезнаяРабота() - - URLРепозитория = "https://github.com/khorevaa/v8storage.git"; - КаталогСборки = ВременныеФайлы.СоздатьКаталог(); - Ветка = "feature/pack-epf"; - - ПутьКМанифестуСборки = ОбъединитьПути(ТекущийСценарий().Каталог, "opm_packagedef_global"); - - // ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); - УстановитьПакет(КаталогСборки, ПутьКМанифестуСборки); - - ВременныеФайлы.УдалитьФайл(КаталогСборки); - -КонецПроцедуры - -Лог = Логирование.ПолучитьЛог("task.install-opm"); - -ПолезнаяРабота(); - - diff --git a/tasks/install-opm-global.os b/tasks/install-opm-global.os deleted file mode 100644 index 35323d2d..00000000 --- a/tasks/install-opm-global.os +++ /dev/null @@ -1,89 +0,0 @@ -#Использовать gitrunner -#Использовать tempfiles -#Использовать fs - -Перем Лог; - -Процедура ПолучитьИсходники(Знач URLРепозитория, Знач Ветка, Знач Каталог) - - ГитРепозиторий = Новый ГитРепозиторий; - - ГитРепозиторий.УстановитьРабочийКаталог(Каталог); - - ГитРепозиторий.КлонироватьРепозиторий(URLРепозитория, Каталог); - ГитРепозиторий.ПерейтиВВетку(Ветка); - -КонецПроцедуры - -Процедура УстановитьПакет(Знач Каталог, ПутьКМанифестуСборки) - - Лог.Информация("Каталог сборки <%1>", Каталог); - - Лог.Информация("Сборка пакета библиотеки"); - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(Каталог); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("build"); - КомандаOpm.ДобавитьПараметр(Каталог); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); - КонецЕсли; - - МассивФайлов = НайтиФайлы(Каталог, "*.ospx"); - - Если МассивФайлов.Количество() = 0 Тогда - ВызватьИсключение Новый ИнформацияОбОшибке("Ошибка создания пакета opm", "Не найден собранный файл пакета opm"); - КонецЕсли; - - ФайлПлагина = МассивФайлов[0].ПолноеИмя; - - КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "oscript_modules"); - - ФС.ОбеспечитьКаталог(КаталогПроекта); - - Лог.Информация("Установка в каталог проекта <%1>", КаталогПроекта); - - Лог.Информация("Установка пакета из файла <%1>", ФайлПлагина); - - КомандаOpm = Новый Команда; - КомандаOpm.УстановитьРабочийКаталог(КаталогПроекта); - КомандаOpm.УстановитьКоманду("opm"); - КомандаOpm.ДобавитьПараметр("install"); - КомандаOpm.ДобавитьПараметр("-f"); - КомандаOpm.ДобавитьПараметр(ФайлПлагина); - // КомандаOpm.ДобавитьПараметр("-dest"); - // КомандаOpm.ДобавитьПараметр(КаталогПроекта); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); - - КодВозврата = КомандаOpm.Исполнить(); - - Если КодВозврата <> 0 Тогда - ВызватьИсключение СтрШаблон("Ошибка установки opm из <%1> по причине <%2>", ФайлПлагина, КомандаOpm.ПолучитьВывод()); - КонецЕсли; - -КонецПроцедуры - -Процедура ПолезнаяРабота() - - URLРепозитория = "https://github.com/khorevaa/opm.git"; - КаталогСборки = ВременныеФайлы.СоздатьКаталог(); - Ветка = "develop"; - - ПутьКМанифестуСборки = ОбъединитьПути(ТекущийСценарий().Каталог, "opm_packagedef_global"); - - ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); - УстановитьПакет(КаталогСборки, ПутьКМанифестуСборки); - - ВременныеФайлы.УдалитьФайл(КаталогСборки); - -КонецПроцедуры - -Лог = Логирование.ПолучитьЛог("task.install-opm"); - -ПолезнаяРабота(); - - diff --git a/tasks/make.os b/tasks/make.os index c4c6232d..daae77ee 100644 --- a/tasks/make.os +++ b/tasks/make.os @@ -15,7 +15,7 @@ КомандаOpm.ДобавитьПараметр("-o"); КомандаOpm.ДобавитьПараметр(ВыходнойКаталог); КомандаOpm.ДобавитьПараметр(КаталогПроекта); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + КомандаOpm.ПоказыватьВыводНемедленно(Истина); КодВозврата = КомандаOpm.Исполнить(); @@ -46,7 +46,7 @@ КомандаOpm.ДобавитьПараметр(ФайлПлагина); КомандаOpm.ДобавитьПараметр("--dest"); КомандаOpm.ДобавитьПараметр(КаталогУстановки); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + КомандаOpm.ПоказыватьВыводНемедленно(Истина); КодВозврата = КомандаOpm.Исполнить(); @@ -69,7 +69,7 @@ КомандаOpm.ДобавитьПараметр("-make"); КомандаOpm.ДобавитьПараметр(ФайлПриложения); КомандаOpm.ДобавитьПараметр(ВыходнойФайл); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + КомандаOpm.ПоказыватьВыводНемедленно(Истина); КодВозврата = КомандаOpm.Исполнить(); @@ -92,7 +92,6 @@ КаталогПлагинов = ПараметрыПриложения.КаталогПлагинов(); КаталогВнутреннихКлассов = ОбъединитьПути(КаталогУстановки, "gitsync", "src/core/Классы/internal/Классы"); - СкопироватьЗагрузчикПлагинов(КаталогВнутреннихКлассов); СкопироватьСтандартныйЗагрузчик(КаталогПлагинов); ПодготовитьФайлИндексПлагиновEXE(КаталогВнутреннихКлассов, КаталогПлагинов); @@ -103,7 +102,7 @@ МассивПлагинов = ПолучитьМассивПлагинов(КаталогПлагинов); - ФайлИндексПлагиновEXE = ОбъединитьПути(КаталогВнутреннихКлассов, "ИндексПлагиновEXE.os"); + ФайлИндексПлагиновEXE = ОбъединитьПути(КаталогВнутреннихКлассов, "ПодключениеЗапакованныхПлагинов.os"); ЗаписьТекста = Новый ЗаписьТекста(ФайлИндексПлагиновEXE); @@ -119,7 +118,7 @@ КонецЦикла; - ЗаписьТекста.ЗаписатьСтроку("Функция ПолучитьИндексПлагиновEXE() Экспорт"); + ЗаписьТекста.ЗаписатьСтроку("Функция ИндексПлагинов() Экспорт"); ЗаписьТекста.ЗаписатьСтроку(" ИндексПлагинов = Новый Массив;"); Для каждого ИмяПлагина Из МассивПлагинов Цикл @@ -224,28 +223,26 @@ КонецПроцедуры -Процедура СкопироватьЗагрузчикПлагинов(Знач КаталогВнутреннихКлассов) - - ЗагрузчикПлагиновEXE = ОбъединитьПути(КаталогВнутреннихКлассов, "ЗагрузчикПлагиновEXE.os"); - ПриемникЗагрузчикПлагинов = ОбъединитьПути(КаталогВнутреннихКлассов, "ЗагрузчикПлагинов.os"); - КопироватьФайл(ЗагрузчикПлагиновEXE, ПриемникЗагрузчикПлагинов); - -КонецПроцедуры - Процедура ИнициализироватьВстроенныеПлагины(Знач КаталогУстановки) ФайлПриложения = ОбъединитьПути(КаталогУстановки, "gitsync", "src/cmd", "gitsync.os"); КомандаOpm = Новый Команда; + КаталогПлагинов = ВременныеФайлы.СоздатьКаталог(); + + УстановитьПеременнуюСреды("GITSYNC_PLUGINS_PATH", КаталогПлагинов); + Лог.Информация("Каталог плагинов сборки <%1>", КаталогПлагинов); + КомандаOpm.УстановитьРабочийКаталог(КаталогУстановки); КомандаOpm.УстановитьКоманду("oscript"); КомандаOpm.ДобавитьПараметр(ФайлПриложения); КомандаOpm.ДобавитьПараметр("p init"); - КомандаOpm.ДобавитьЛогВыводаКоманды("task.install-opm"); + КомандаOpm.ПоказыватьВыводНемедленно(Истина); + // КомандаOpm.("task.install-opm"); КодВозврата = КомандаOpm.Исполнить(); - Если КодВозврата <> 0 Тогда + Если КодВозврата <> 0 Тогда ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; @@ -256,7 +253,6 @@ КаталогСборки = ВременныеФайлы.СоздатьКаталог(); КаталогУстановки = ВременныеФайлы.СоздатьКаталог(); - ПутьКМанифестуСборки = ОбъединитьПути(КаталогПроекта, "build_packagedef"); СобратьПакет(КаталогСборки, ПутьКМанифестуСборки); @@ -270,11 +266,12 @@ ВыполнитьСборкуEXE(КаталогУстановки); ВременныеФайлы.УдалитьФайл(КаталогСборки); - ВременныеФайлы.УдалитьФайл(КаталогУстановки); + //ВременныеФайлы.УдалитьФайл(КаталогУстановки); КонецПроцедуры КаталогПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); Лог = Логирование.ПолучитьЛог("task.install-opm"); +// Лог.УстановитьУровень(УровниЛОга.отладка); ПолезнаяРабота(); diff --git a/tasks/pack.os b/tasks/pack.os new file mode 100644 index 00000000..e77635a9 --- /dev/null +++ b/tasks/pack.os @@ -0,0 +1,149 @@ +Перем ИндексКлассов; +Перем КаталогBin; +Перем КаталогКлассов; +Перем ПрефиксКлассов; +Перем ИмяМенеджераФайлов; + +Процедура ВыполнитьЗапаковку() + + ТекущийКаталогЗадачи = ТекущийСценарий().Каталог; + + КаталогПроекта = Новый Файл(ОбъединитьПути(ТекущийКаталогЗадачи, "..")).ПолноеИмя; + + ПрефиксКлассов = "Gitsync"; + + КаталогКлассов = ОбъединитьПути(КаталогПроекта, "src", "core", ОбъединитьПути("Классы","internal","bindata","Классы")); + + КаталогBin = ОбъединитьПути(КаталогПроекта, "bin"); + + ИмяМенеджераФайлов = СтрШаблон("МенеджерЗапакованныхФайлов%1.os", ПрефиксКлассов); + + ИндексКлассов = Новый Соответствие; + ОбработатьКаталог(КаталогBin, "*.cfe"); + ОбработатьКаталог(ОбъединитьПути(КаталогПроекта, "docs"), "*.md"); + + ЗаписатьКлассИндексаЗапаковки(ИндексКлассов); + +КонецПроцедуры + +Процедура ЗаписатьКлассИндексаЗапаковки(ИндексКлассов) + + ТекстБлока = "Функция ПолучитьИндексФайлов() Экспорт + | + | ИндексФайлов = Новый Соответствие; + |"; + + ШаблонДобавленияВИндекс = " ИндексФайлов.Вставить(""%1"", ""%2"");"; + + Для каждого ДанныеКласса Из ИндексКлассов Цикл + + ТекстБлока = ТекстБлока + СтрШаблон(ШаблонДобавленияВИндекс, ДанныеКласса.Ключ, ДанныеКласса.Значение) + Символы.ПС; + + КонецЦикла; + + ТекстБлока = ТекстБлока + " + | Возврат ИндексФайлов; + | + |КонецФункции"; + + ФайлКлассаМенеджерЗапакованныхФайлов = ОбъединитьПути(КаталогКлассов, ИмяМенеджераФайлов); + + ЗаписьТекста = Новый ЗаписьТекста(ФайлКлассаМенеджерЗапакованныхФайлов); + ЗаписьТекста.ЗаписатьСтроку(ТекстБлока); + ЗаписьТекста.Закрыть(); + + Сообщить("Данные запакованы в классы"); + +КонецПроцедуры + +Процедура ОбработатьКаталог(Знач КаталогОбработки, Знач МаскаПоискаФайлов) + + МассивНайденныхФайлов = НайтиФайлы(КаталогОбработки, МаскаПоискаФайлов); + + Для каждого НайденныйФайл Из МассивНайденныхФайлов Цикл + + Если НайденныйФайл.ЭтоКаталог() Тогда + Продолжить; + КонецЕсли; + + ИмяФайла = СтрЗаменить(НайденныйФайл.ИмяБезРасширения, ".", "_"); + ПолныйПутьКФайлу = НайденныйФайл.ПолноеИмя; + + ИмяКлассаФайла = СтрШаблон("%1_%2", ИмяФайла, ПрефиксКлассов); + + ПутьКФайлуКласса = ОбъединитьПути(КаталогКлассов, ИмяКлассаФайла + ".os"); + ДанныеФайла = ПолучитBase64Строка(ПолныйПутьКФайлу); + ХешСтрока = ПолучитьХешСтроку(ПолныйПутьКФайлу); + + ЗаписатьКласс(ПутьКФайлуКласса, НайденныйФайл.Имя, "1.0.0", ХешСтрока, ДанныеФайла); + + ИндексКлассов.Вставить(НайденныйФайл.Имя, ИмяКлассаФайла); + + КонецЦикла; + + +КонецПроцедуры + +Функция ПолучитьХешСтроку(ПутьКФайлу) + + ХешФайла = Новый ХешированиеДанных(ХешФункция.MD5); + ХешФайла.ДобавитьФайл(ПутьКФайлу); + + Возврат ХешФайла.ХешСуммаСтрокой; + +КонецФункции + +Процедура ЗаписатьКласс(ПутьКФайлуКласса, ИмяФайла, ВерсияФайла, ХешСтрока, ДанныеФайла) + + ШаблонТекст = " + |/////////////////////////////////////////// + |// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // + |/////////////////////////////////////////// + |// + |// ФАЙЛ: <%1> + |// + | + |// Возвращает версию запакованного файла + |// + |Функция Версия() Экспорт + | Возврат ""%2""; + |КонецФункции + | + |// Возвращает имя запакованного файла + |// + |Функция ИмяФайла() Экспорт + | Возврат ""%1""; + |КонецФункции + | + |// Возвращает хеш строку запакованного файла + |// + |Функция Хеш() Экспорт + | Возврат ""%3""; + |КонецФункции + | + |// Возвращает запакованные данные файла + |// + |Функция ДвоичныеДанные() Экспорт + | ЗапакованныеДанные = ""%4""; + | Возврат ЗапакованныеДанные; + |КонецФункции + | + |"; + + ТекстКласса = СтрШаблон(ШаблонТекст, ИмяФайла, ВерсияФайла, ХешСтрока, ДанныеФайла); + + ЗаписьТекста = Новый ЗаписьТекста(ПутьКФайлуКласса); + ЗаписьТекста.ЗаписатьСтроку(ТекстКласса); + ЗаписьТекста.Закрыть(); + +КонецПроцедуры + +Функция ПолучитBase64Строка(ПутьКФайлу) + + ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу); + Строка = Base64Строка(ДвоичныеДанныеФайла); + Возврат Строка; + +КонецФункции + +ВыполнитьЗапаковку(); \ No newline at end of file diff --git a/tasks/test.os b/tasks/test.os index 46098aeb..034f396c 100644 --- a/tasks/test.os +++ b/tasks/test.os @@ -188,12 +188,12 @@ КонецФункции // ПрогнатьФичи() Функция ПрогнатьФичи() + ФичиПрошли_opm = ПрогнатьФичи_opm(); ФичиПрошли_core = ПрогнатьФичи_core(); ФичиПрошли_cmd = ПрогнатьФичи_cmd(); - - //ФичиПрошли_exe = ПрогнатьФичи_exe(); - ФичиПрошли_exe = Истина; + ФичиПрошли_exe = ПрогнатьФичи_exe(); + // ФичиПрошли_exe = Истина; Возврат ФичиПрошли_opm diff --git a/tests/fixtures/default.yaml b/tests/fixtures/default.yaml new file mode 100644 index 00000000..c9b151f3 --- /dev/null +++ b/tests/fixtures/default.yaml @@ -0,0 +1,35 @@ +globals: + storage-user: Администратор + storage-pwd: '' + git-path: git + v8version: 8.3 + domain-email: localhost + lic-try-count: 5 + plugins: + enable: + - test + - test2 + disable: + - test3 +repositories: + - name: ТестовыйРепозиторий + # disable: false + path: <КаталогХранилища1С_1> + dir: <ПутьКаталогаИсходников_1> + plugins: + more: + - test3 + plugins-config: + URL: http + + - name: ТестовыйРепозиторий2 + # disable: true + path: <КаталогХранилища1С_2> + dir: <ПутьКаталогаИсходников_2> + storage-user: Администратор + storage-pwd: '' + git-path: git + temp-dir: "" + v8version: 8.3 + domain-email: localhost + lic-try-count: 5 \ No newline at end of file diff --git a/tests/fixtures/ext.yaml b/tests/fixtures/ext.yaml new file mode 100644 index 00000000..3f02e665 --- /dev/null +++ b/tests/fixtures/ext.yaml @@ -0,0 +1,11 @@ + name: Расширение1 + extention: test + path: <КаталогХранилищаРасширения> + dir: <ПутьКаталогаИсходниковРасширения> + storage-user: Администратор + storage-pwd: '' + git-path: git + temp-dir: "" + v8version: 8.3 + domain-email: localhost + lic-try-count: 5 \ No newline at end of file diff --git a/tests/fixtures/extension_storage/1cv8ddb.1CD b/tests/fixtures/extension_storage/1cv8ddb.1CD index 01c27148..bad3a7ee 100644 Binary files a/tests/fixtures/extension_storage/1cv8ddb.1CD and b/tests/fixtures/extension_storage/1cv8ddb.1CD differ diff --git a/tests/fixtures/extension_storage/data/objects/09/0694564fb2cc20d4ee82dff29581aea6ebceb2 b/tests/fixtures/extension_storage/data/objects/09/0694564fb2cc20d4ee82dff29581aea6ebceb2 new file mode 100644 index 00000000..40436522 Binary files /dev/null and b/tests/fixtures/extension_storage/data/objects/09/0694564fb2cc20d4ee82dff29581aea6ebceb2 differ diff --git a/tests/fixtures/extension_storage/data/objects/15/af5e8f18aea8397ae287ef2f0f237eca7ba410 b/tests/fixtures/extension_storage/data/objects/15/af5e8f18aea8397ae287ef2f0f237eca7ba410 new file mode 100644 index 00000000..778f3f5c --- /dev/null +++ b/tests/fixtures/extension_storage/data/objects/15/af5e8f18aea8397ae287ef2f0f237eca7ba410 @@ -0,0 +1 @@ +{0,0} \ No newline at end of file diff --git a/tests/fixtures/extension_storage/data/objects/3e/09dd8ca40ee4c38920ec37b53860a6335d9749 b/tests/fixtures/extension_storage/data/objects/3e/09dd8ca40ee4c38920ec37b53860a6335d9749 new file mode 100644 index 00000000..fa9ff593 Binary files /dev/null and b/tests/fixtures/extension_storage/data/objects/3e/09dd8ca40ee4c38920ec37b53860a6335d9749 differ diff --git a/tests/fixtures/extension_storage/data/objects/51/ddb08f4a5453469fb93b1cdc90304d747357b7 b/tests/fixtures/extension_storage/data/objects/51/ddb08f4a5453469fb93b1cdc90304d747357b7 new file mode 100644 index 00000000..2d9537fe Binary files /dev/null and b/tests/fixtures/extension_storage/data/objects/51/ddb08f4a5453469fb93b1cdc90304d747357b7 differ diff --git a/tests/fixtures/extension_storage/data/objects/90/5786cba6e9271268f277226315b61c46427718 b/tests/fixtures/extension_storage/data/objects/90/5786cba6e9271268f277226315b61c46427718 new file mode 100644 index 00000000..ba0858ba Binary files /dev/null and b/tests/fixtures/extension_storage/data/objects/90/5786cba6e9271268f277226315b61c46427718 differ diff --git a/tests/fixtures/extension_storage/data/objects/fd/94de288b43ff531cadf282f9664dd70031a9cb b/tests/fixtures/extension_storage/data/objects/fd/94de288b43ff531cadf282f9664dd70031a9cb new file mode 100644 index 00000000..06aa04e9 Binary files /dev/null and b/tests/fixtures/extension_storage/data/objects/fd/94de288b43ff531cadf282f9664dd70031a9cb differ diff --git a/tests/fixtures/extension_storage/data/pack/pack-c262dc49d0c6254821c6af2f1aaced0d0d28d2b3.ind b/tests/fixtures/extension_storage/data/pack/pack-c262dc49d0c6254821c6af2f1aaced0d0d28d2b3.ind new file mode 100644 index 00000000..d159252b Binary files /dev/null and b/tests/fixtures/extension_storage/data/pack/pack-c262dc49d0c6254821c6af2f1aaced0d0d28d2b3.ind differ diff --git a/tests/fixtures/extension_storage/data/pack/pack-c262dc49d0c6254821c6af2f1aaced0d0d28d2b3.pck b/tests/fixtures/extension_storage/data/pack/pack-c262dc49d0c6254821c6af2f1aaced0d0d28d2b3.pck new file mode 100644 index 00000000..6e606fc3 Binary files /dev/null and b/tests/fixtures/extension_storage/data/pack/pack-c262dc49d0c6254821c6af2f1aaced0d0d28d2b3.pck differ diff --git a/tests/fixtures/extension_storage/data/ver b/tests/fixtures/extension_storage/data/ver new file mode 100644 index 00000000..20d5cb86 Binary files /dev/null and b/tests/fixtures/extension_storage/data/ver differ diff --git a/tests/fixtures/extension_storage/ver b/tests/fixtures/extension_storage/ver new file mode 100644 index 00000000..bbaa99cd --- /dev/null +++ b/tests/fixtures/extension_storage/ver @@ -0,0 +1 @@ +{0,2,8,3,14,1533,"Designer"} \ No newline at end of file diff --git "a/tests/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262_test.os" "b/tests/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262_test.os" new file mode 100644 index 00000000..45e707ca --- /dev/null +++ "b/tests/\320\234\320\265\320\275\320\265\320\264\320\266\320\265\321\200\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262_test.os" @@ -0,0 +1,100 @@ +#использовать "../src/core/" +#Использовать asserts +#Использовать logos + +Перем юТест; +Перем Лог; + +Функция ПолучитьСписокТестов(Знач Тестирование) Экспорт + + юТест = Тестирование; + + ИменаТестов = Новый Массив; + + ИменаТестов.Добавить("ТестДолжен_ПроверитьИндексПлагинов"); + ИменаТестов.Добавить("ТестДолжен_ПроверитьВключениеПлагинов"); + ИменаТестов.Добавить("ТестДолжен_ПроверитьВыключениеПлагинов"); + + Возврат ИменаТестов; + +КонецФункции + +Процедура ТестДолжен_ПроверитьИндексПлагинов() Экспорт + + КаталогПлагинов = ВременныеФайлы.СоздатьКаталог(); + + МенеджерПлагинов = Новый МенеджерПлагинов(КаталогПлагинов); + МенеджерПлагинов.УстановитьФайлПлагин(ОбъединитьПути(КаталогПроекта(), "tests", "test_plugin-0.0.1.ospx")); + МенеджерПлагинов.ЗагрузитьПлагины(); + + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); + Ожидаем.Что(ИндексПлагинов.Количество(), "Количество плагинов должно быть равны").Равно(1); + ВременныеФайлы.УдалитьФайл(КаталогПлагинов); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьВключениеПлагинов() Экспорт + + КаталогПлагинов = ВременныеФайлы.СоздатьКаталог(); + + МенеджерПлагинов = Новый МенеджерПлагинов(КаталогПлагинов); + МенеджерПлагинов.УстановитьФайлПлагин(ОбъединитьПути(КаталогПроекта(), "tests", "test_plugin-0.0.1.ospx")); + МенеджерПлагинов.ЗагрузитьПлагины(); + + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); + Ожидаем.Что(ИндексПлагинов.Количество(), "Количество плагинов должно быть равны").Равно(1); + + МенеджерПлагинов.ВключитьПлагин("test_plugin"); + + Ожидаем.Что(ИндексПлагинов["test_plugin"].Включен(), "Плагин должен быть включен").ЭтоИстина(); + + ВременныеФайлы.УдалитьФайл(КаталогПлагинов); + +КонецПроцедуры + +Процедура ТестДолжен_ПроверитьВыключениеПлагинов() Экспорт + + КаталогПлагинов = ВременныеФайлы.СоздатьКаталог(); + + МенеджерПлагинов = Новый МенеджерПлагинов(КаталогПлагинов); + МенеджерПлагинов.УстановитьФайлПлагин(ОбъединитьПути(КаталогПроекта(), "tests", "test_plugin-0.0.1.ospx")); + МенеджерПлагинов.ЗагрузитьПлагины(); + + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); + Ожидаем.Что(ИндексПлагинов.Количество(), "Количество плагинов должно быть равны").Равно(1); + + МенеджерПлагинов.ВключитьПлагин("test_plugin"); + + Ожидаем.Что(ИндексПлагинов["test_plugin"].Включен(), "Плагин должен быть включен").ЭтоИстина(); + + МассивПлагинов = Новый Массив(); + МассивПлагинов.Добавить("test_plugin"); + + МенеджерПлагинов.ОтключитьПлагины(МассивПлагинов); + + Ожидаем.Что(ИндексПлагинов["test_plugin"].Включен(), "Плагин должен быть выключен").ЭтоЛожь(); + + ВременныеФайлы.УдалитьФайл(КаталогПлагинов); + +КонецПроцедуры + +Функция КаталогПлагинов() + + КаталогТестов = ТекущийСценарий().Каталог; + + КаталогПлагинов = ОбъединитьПути(КаталогТестов, "fixtures", "КаталогПлагинов"); + Файл = Новый Файл(КаталогПлагинов); + Возврат Файл.ПолноеИмя; + +КонецФункции + +Функция КаталогПроекта() + + ПутьККаталогуПроекта = ОбъединитьПути(ТекущийСценарий().Каталог, ".."); + Файл = Новый Файл(ПутьККаталогуПроекта); + Возврат Файл.ПолноеИмя; + +КонецФункции + +Лог = Логирование.ПолучитьЛог("oscript.lib.gitsync"); +// Лог.УстановитьУровень(УровниЛога.Отладка); \ No newline at end of file