diff --git a/build_packagedef b/build_packagedef index fb918765..8421475b 100644 --- a/build_packagedef +++ b/build_packagedef @@ -21,6 +21,8 @@ КомандаOpm = Новый Команда; КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("run install-opm"); + КомандаOpm.ДобавитьПараметр("feature/install-depends"); + КомандаOpm.ДобавитьЛогВыводаКоманды(ПараметрыСистемыOpm.ИмяЛогаСистемы()); КодВозврата = КомандаOpm.Исполнить(); @@ -50,6 +52,9 @@ КомандаOpm.УстановитьКоманду("opm"); КомандаOpm.ДобавитьПараметр("run get-plugins"); + КомандаOpm.ДобавитьЛогВыводаКоманды(ПараметрыСистемыOpm.ИмяЛогаСистемы()); + + КодВозврата = КомандаOpm.Исполнить(); Если КодВозврата <> 0 Тогда @@ -79,7 +84,7 @@ Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); Описание.Имя("gitsync") - .Версия("3.0.0-beta") + .Версия("3.0.1-beta") .ВерсияСреды("1.0.20") .ВключитьФайл("src") .ВключитьФайл("embedded_plugins") diff --git a/features/check.core.feature b/features/check.core.feature index 665f50c1..20093a64 100644 --- a/features/check.core.feature +++ b/features/check.core.feature @@ -13,3 +13,9 @@ Когда Я создаю новый МенеджерПодписок И Я создаю новый ИнтерфейсПлагинов Тогда МенеджераПодписок реализует ИнтерфейсаПлагинов + +Сценарий: Проверка интерфейса ТестовыйПлагин + + Когда Я создаю новый ТестовыйПлагин + И Я создаю новый ИнтерфейсПлагинов + Тогда ТестовыйПлагин реализует ИнтерфейсаПлагинов \ No newline at end of file diff --git a/features/step_definitions/check.core.os b/features/step_definitions/check.core.os index f3adf24a..20ec76e5 100644 --- a/features/step_definitions/check.core.os +++ b/features/step_definitions/check.core.os @@ -13,6 +13,8 @@ ВсеШаги.Добавить("ЯСоздаюНовыйМенеджерподписок"); ВсеШаги.Добавить("ЯСоздаюНовыйИнтерфейсплагинов"); ВсеШаги.Добавить("МенеджераподписокРеализуетИнтерфейсаплагинов"); + ВсеШаги.Добавить("ЯСоздаюНовыйТестовыйплагин"); + ВсеШаги.Добавить("ТестовыйплагинРеализуетИнтерфейсаплагинов"); Возврат ВсеШаги; КонецФункции @@ -55,3 +57,18 @@ КонецПроцедуры +//Я создаю новый ТестовыйПлагин +Процедура ЯСоздаюНовыйТестовыйплагин() Экспорт + ПутьКПлагину = ОбъединитьПути(ТекущийСценарий().Каталог, "testsata/test_plugin/src/Классы", "testPlugin.os"); + ПодключитьСценарий(ПутьКПлагину, "ТестовыйПлагин"); + + БДД.СохранитьВКонтекст("ТестовыйПлагин", Новый ТестовыйПлагин); +КонецПроцедуры + +//ТестовыйПлагин реализует ИнтерфейсаПлагинов +Процедура ТестовыйплагинРеализуетИнтерфейсаплагинов() Экспорт + ИнтерфейсПлагинов = БДД.ПолучитьИзКонтекста("ИнтерфейсПлагинов"); + ТестовыйПлагин = БДД.ПолучитьИзКонтекста("ТестовыйПлагин"); + + ИнтерфейсПлагинов.Реализует(ТестовыйПлагин, Истина); +КонецПроцедуры diff --git a/features/sync.feature b/features/sync.feature index 738228ac..54d190a2 100644 --- a/features/sync.feature +++ b/features/sync.feature @@ -66,4 +66,20 @@ И Код возврата команды "gitsync" равен 0 И Я очищаю значение переменных окружения |GITSYNC_STORAGE_PATH| + |GITSYNC_WORKDIR| + +Сценарий: Синхронизация хранилища с git-репозиторием с использованием пути к git + Допустим Я создаю временный каталог и сохраняю его в переменной "ВременнаяДиректория" + И Я добавляю параметр "--tempdir" для команды "gitsync" из переменной "ВременнаяДиректория" + И Я добавляю параметр "--git-path git" для команды "gitsync" + И Я добавляю параметр "-v" для команды "gitsync" + И Я добавляю параметр "sync" для команды "gitsync" + И Я устанавливаю переменную окружения "GITSYNC_STORAGE_PATH" из переменной "КаталогХранилища1С" + И Я устанавливаю переменную окружения "GITSYNC_WORKDIR" из переменной "ПутьКаталогаИсходников" + Когда Я выполняю команду "gitsync" + Тогда Вывод команды "gitsync" содержит "ИНФОРМАЦИЯ - Завершена синхронизации с git" + И Вывод команды "gitsync" не содержит "Внешнее исключение" + И Код возврата команды "gitsync" равен 0 + И Я очищаю значение переменных окружения + |GITSYNC_STORAGE_PATH| |GITSYNC_WORKDIR| \ No newline at end of file diff --git a/gitsync3_packagedef b/gitsync3_packagedef new file mode 100644 index 00000000..9e7e0dc7 --- /dev/null +++ b/gitsync3_packagedef @@ -0,0 +1,94 @@ +#Использовать logos +#Использовать fs +Перем Лог; + +Процедура ПередСборкой(Знач РабочийКаталог) Экспорт + + ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); + + Лог.Информация("Установка локальных зависимостей библиотек"); + КомандаOpm = Новый Команда; + + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("install -l"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение КомандаOpm.ПолучитьВывод(); + КонецЕсли; + + КомандаOpm = Новый Команда; + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("run install-opm"); + КомандаOpm.ДобавитьПараметр("feature/install-depends"); + КомандаOpm.ДобавитьЛогВыводаКоманды(ПараметрыСистемыOpm.ИмяЛогаСистемы()); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение Команда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.ДобавитьЛогВыводаКоманды(ПараметрыСистемыOpm.ИмяЛогаСистемы()); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение КомандаOpm.ПолучитьВывод(); + КонецЕсли; + + Лог.Информация("Настройка локальных библиотек завершена"); + +КонецПроцедуры + +Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт + +КонецПроцедуры + +Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт + + ПутьКФайлуНастройкиСкрипта = ОбъединитьПути(РабочийКаталог, "src", "cmd", "oscript.cfg"); + ФайлНастройкиСкрипта= Новый Файл(ПутьКФайлуНастройкиСкрипта); + Если ФайлНастройкиСкрипта.Существует() Тогда + УдалитьФайлы(ПутьКФайлуНастройкиСкрипта); + КонецЕсли; + + ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); + +КонецПроцедуры + +Лог = Логирование.ПолучитьЛог(ПараметрыСистемыOpm.ИмяЛогаСистемы()); + +Описание.Имя("gitsync3") + .Версия("0.9.3-beta") + .ВерсияСреды("1.0.20") + .ВключитьФайл("src") + .ВключитьФайл("embedded_plugins") + .ВключитьФайл("oscript_modules") + .ВключитьФайл("docs") + .ВключитьФайл("readme.md") + .ОпределяетКласс("МенеджерСинхронизации", "src/core/Классы/МенеджерСинхронизации.os") + .ОпределяетКласс("УправлениеПлагинами", "src/core/Классы/УправлениеПлагинами.os") + .ИсполняемыйФайл("src/cmd/gitsync.os", "gitsync3"); \ No newline at end of file diff --git a/packagedef b/packagedef index 9ccfb079..fba29edd 100644 --- a/packagedef +++ b/packagedef @@ -26,7 +26,7 @@ Описание.Имя("gitsync") .Версия("3.0.0-beta") .ВерсияСреды("1.0.20") - .ЗависитОт("logos", "1.0.1") + .ЗависитОт("logos", "1.1.1") .ЗависитОт("tempfiles", "0.2.2") .ЗависитОт("v8runner", "1.1.3") .ЗависитОт("gitrunner", "1.5.1") @@ -36,8 +36,8 @@ .ЗависитОт("fs", "0.4.1") .ЗависитОт("delegate", "0.2.0") .ЗависитОт("v8storage", "0.6.5") - .ЗависитОт("reflector") - //.ЗависитОт("opm", "1.13.1") + .ЗависитОт("reflector", "0.4.0") + //.ЗависитОт("opm", "1.14.0") .ЗависитОт("cli", "0.9.8") .ЗависитОт("fluent", "0.3.1") // Для работы opm .ВключитьФайл("src") diff --git a/readme.md b/readme.md index 1f7dc555..29a0f8b5 100644 --- a/readme.md +++ b/readme.md @@ -105,7 +105,7 @@ $ opm install -f <ПутьКФайлу> Пример использования: -`gisync clone --storage-user Администратор --storage-pwd Секрет <путь_к_хранилищу_1С> <адрес_удаленного_репозитория> <рабочий_каталог>(необязательный)` +`gitsync clone --storage-user Администратор --storage-pwd Секрет <путь_к_хранилищу_1С> <адрес_удаленного_репозитория> <рабочий_каталог>(необязательный)` Справка по команде `clone`: `gitsync clone --help` @@ -115,9 +115,13 @@ $ opm install -f <ПутьКФайлу> Пример использования: -`gitsync init --storage-user Администратор --storage-pwd Секрет C:/Хранилище_1С/ C:/GIT/src` +* `gitsync init --storage-user Администратор --storage-pwd Секрет C:/Хранилище_1С/ C:/GIT/src` -Данная команда создаст новый репозиторий git в каталоге `C:/GIT/src` из хранилища 1С по пути `C:/Хранилище_1С/` и наполнил его служебными файлами `VERSION` и `AUTHORS` + Данная команда создаст новый репозиторий git в каталоге `C:/GIT/src` из хранилища 1С по пути `C:/Хранилище_1С/` и наполнил его служебными файлами `VERSION` и `AUTHORS` + +* `gitsync init --storage-user Администратор --storage-pwd Секрет http:/www.storages.1c.com/repository.1ccr/ИмяХранилища C:/GIT/src` + + Тоже самое только для `http` хранилищем по адресу `http:/www.storages.1c.com/repository.1ccr/ИмяХранилища` Справка по команде `init`: `gitsync init --help` diff --git a/src/cmd/gitsync.os b/src/cmd/gitsync.os index 4edbbbe1..2badc069 100644 --- a/src/cmd/gitsync.os +++ b/src/cmd/gitsync.os @@ -31,7 +31,10 @@ Приложение.Опция("t tempdir", "", "путь к каталогу временных файлов") .ВОкружении("GITSYNC_TEMP"); - + + Приложение.Опция("git-path", "", "путь к исполняемому файлу git") + .ВОкружении("GITSYNC_GIT_PATH GIT_PATH"); + Приложение.Опция("domain-email", "localhost", "домен почты для пользователей git") .ВОкружении("GITSYNC_EMAIL"); @@ -61,7 +64,7 @@ ВерсияПлатформы = Команда.ЗначениеОпции("v8version"); ВыводДополнительнойИнформации = Команда.ЗначениеОпции("verbose"); - //Плагины = Команда.ЗначениеОпции("plugins"); + ПутьКГит = Команда.ЗначениеОпции("git-path"); ДоменПочты = Команда.ЗначениеОпции("domain-email"); ВременныйКаталогРаботы = Команда.ЗначениеОпции("tempdir"); ДоменПочты = Команда.ЗначениеОпции("domain-email"); @@ -70,7 +73,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\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 ab896c09..92498673 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" @@ -58,6 +58,8 @@ Распаковщик = Новый МенеджерСинхронизации(); Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) + .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) + .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) .ПодпискиНаСобытия(ИндексПлагинов) .ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды()) .УровеньЛога(ПараметрыПриложения.УровеньЛога()) @@ -77,6 +79,13 @@ Лог.Отладка("URL репозитория: <%1>", URLРепозитария); ГитРепозиторий = Новый ГитРепозиторий; + + ОбщиеПараметры = ПараметрыПриложения.Параметры(); + + Если ЗначениеЗаполнено(ОбщиеПараметры.ПутьКГит) Тогда + ГитРепозиторий.УстановитьПутьКГит(ОбщиеПараметры.ПутьКГит); + КонецЕсли; + ГитРепозиторий.УстановитьРабочийКаталог(КаталогЛокальнойКопии); ГитРепозиторий.КлонироватьРепозиторий(URLРепозитария, КаталогЛокальнойКопии); 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 358e2658..c3e28df2 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" @@ -60,6 +60,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\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 9a8c28ac..722b5216 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" @@ -21,7 +21,7 @@ НомерВерсии = Команда.ЗначениеАргумента("VERSION"); КаталогРабочейКопии = Команда.ЗначениеАргумента("WORKDIR"); - ВызватьКоммит = Команда.ЗначениеОпции("--commit"); + ВызватьКоммит = Команда.ЗначениеОпции("commit"); ОбщиеПараметры = ПараметрыПриложения.Параметры(); МенеджерПлагинов = ОбщиеПараметры.УправлениеПлагинами; @@ -30,6 +30,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\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 13ffb0be..53c286d7 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" @@ -55,6 +55,8 @@ Распаковщик = Новый МенеджерСинхронизации(); Распаковщик.ВерсияПлатформы(ОбщиеПараметры.ВерсияПлатформы) + .ДоменПочтыПоУмолчанию(ОбщиеПараметры.ДоменПочты) + .ИсполняемыйФайлГит(ОбщиеПараметры.ПутьКГит) .ПодпискиНаСобытия(ИндексПлагинов) .ПараметрыПодписокНаСобытия(Команда.ПараметрыКоманды()) .УровеньЛога(ПараметрыПриложения.УровеньЛога()) 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 7bb50813..d6cbb915 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" @@ -12,15 +12,20 @@ ОбщиеПараметры.Вставить("Плагины", Новый Массив); ОбщиеПараметры.Вставить("ВерсияПлатформы", "8.3"); ОбщиеПараметры.Вставить("ДоменПочты", "localhost"); + ОбщиеПараметры.Вставить("ПутьКГит", ""); ПодготовитьПлагины(); КонецПроцедуры -Процедура УстановитьВерсиюПлатформы(ВерсияПлатформы) Экспорт +Процедура УстановитьВерсиюПлатформы(Знач ВерсияПлатформы) Экспорт ОбщиеПараметры.Вставить("ВерсияПлатформы", ВерсияПлатформы); КонецПроцедуры +Процедура УстановитьПутьКГит(Знач ПутьКГит) Экспорт + ОбщиеПараметры.Вставить("ПутьКГит", ПутьКГит); +КонецПроцедуры + Процедура УстановитьКаталогПлагинов(Знач ПутьККаталогуПлагинов) Экспорт ЛогПриложения.Отладка("Устанавливаю каталог плагинов <%1>", ПутьККаталогуПлагинов); 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\321\202\320\265\321\200\321\204\320\265\320\271\321\201\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\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" index 7e2f2b3b..ea0d35eb 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\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\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\230\320\275\321\202\320\265\321\200\321\204\320\265\320\271\321\201\320\237\320\273\320\260\320\263\320\270\320\275\320\276\320\262.os" @@ -37,60 +37,9 @@ ДоступныйИнтерфейсПлагинов = Новый ИнтерфейсОбъекта(); - // Вызывается в процедуре АктивизироватьПлагины - ДоступныйИнтерфейсПлагинов.П("ПриАктивизации", 1); // - ДоступныйИнтерфейсПлагинов.П("ПриПолученииПараметров", 1); // + МенеджерПодписок = Новый МенеджерПодписок; - // Подписки на регистрацию команд приложения - ДоступныйИнтерфейсПлагинов.П("ПриРегистрацииКомандыПриложения", 2); // - - - // Подписки на начало и окончания выполнения - ДоступныйИнтерфейсПлагинов.П("ПередНачаломВыполнения", 2); // - ДоступныйИнтерфейсПлагинов.П("ПослеОкончанияВыполнения", 2); - - // Подписки на получение таблицы версий - ДоступныйИнтерфейсПлагинов.П("ПриПолученииТаблицыВерсий", 3); - ДоступныйИнтерфейсПлагинов.П("ПослеПолученияТаблицыВерсий", 2); - - // Подписки на получение таблицы пользователей - ДоступныйИнтерфейсПлагинов.П("ПриПолученииТаблицыПользователей", 3); - ДоступныйИнтерфейсПлагинов.П("ПослеПолученияТаблицыПользователей", 2); - - // Подписки на обработки строки версии - ДоступныйИнтерфейсПлагинов.П("ПередНачаломЦиклаОбработкиВерсий", 4); - ДоступныйИнтерфейсПлагинов.П("ПередОбработкойВерсииХранилища", 2); - ДоступныйИнтерфейсПлагинов.П("ПриОбработкеВерсииХранилища", 2); - ДоступныйИнтерфейсПлагинов.П("ПослеОбработкиВерсииХранилища", 2); - - // Подписки на выполнение коммита - ДоступныйИнтерфейсПлагинов.П("ПередКоммитом", 4); - ДоступныйИнтерфейсПлагинов.П("ПриКоммите", 8); - ДоступныйИнтерфейсПлагинов.П("ПослеКоммита", 2); - - // Подписки на начало и окончания выгрузки версии конфигурации - ДоступныйИнтерфейсПлагинов.П("ПередНачаломВыгрузкиВерсииХранилищаКонфигурации", 4); - ДоступныйИнтерфейсПлагинов.П("ПослеОкончанияВыгрузкиВерсииХранилищаКонфигурации", 4); - - // Подписки на загрузку версии конфигурации из хранилища - ДоступныйИнтерфейсПлагинов.П("ПередЗагрузкойВерсииХранилищаКонфигурации", 4); - ДоступныйИнтерфейсПлагинов.П("ПриЗагрузкеВерсииХранилищаВКонфигурацию", 5); - ДоступныйИнтерфейсПлагинов.П("ПослеЗагрузкиВерсииХранилищаВКонфигурацию", 4); - - // Подписки на выгрузку конфигурации в исходники - ДоступныйИнтерфейсПлагинов.П("ПередВыгрузкойКонфигурациюВИсходники", 5); - ДоступныйИнтерфейсПлагинов.П("ПриВыгрузкеКонфигурациюВИсходники", 3); - ДоступныйИнтерфейсПлагинов.П("ПослеВыгрузкиКонфигурациюВИсходники", 2); - - // Подписки на очистку каталога рабочей версии - ДоступныйИнтерфейсПлагинов.П("ПередОчисткойКаталогаРабочейКопии", 5); // - ДоступныйИнтерфейсПлагинов.П("ПриОчисткеКаталогаРабочейКопии", 3); - ДоступныйИнтерфейсПлагинов.П("ПослеОчисткиКаталогаРабочейКопии", 2); // - - // Подписки на перемещение в каталог рабочей копии - ДоступныйИнтерфейсПлагинов.П("ПередПеремещениемВКаталогРабочейКопии", 5); // - ДоступныйИнтерфейсПлагинов.П("ПриПеремещенииВКаталогРабочейКопии", 3); - ДоступныйИнтерфейсПлагинов.П("ПослеПеремещенияВКаталогРабочейКопии", 2); // + ДоступныйИнтерфейсПлагинов.ИзОбъектаИсключая(МенеджерПодписок, "УстановитьПодписчиков"); Возврат ДоступныйИнтерфейсПлагинов; 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 6d90c57e..50ec2327 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" @@ -24,6 +24,7 @@ Перем ХранилищеКонфигурации; // Объект.МенеджерХранилищаКонфигурации Перем АвторизацияВХранилище; // Структура ключи <Пользователь>, <ПарольПользователя> Перем МенеджерКонфигуратора; // Объект.МенеджерКонфигуратора +Перем ПутьКИсполняемомуФайлуGit; // Строка, полный путь к исполняемому файлу git /////////////////////////////////////////////////////////////////////////////////////////////// // ПРОГРАММНЫЙ ИНТЕРФЕЙС @@ -130,6 +131,21 @@ КонецФункции +// Устанавливает домен для почты по умолчанию +// +// Параметры: +// НовыйДоменПочтыДляGit - Строка - новый домен для почты по умолчанию +// +// Возвращаемое значение: +// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> +// +Функция ДоменПочтыПоУмолчанию(Знач НовыйДоменПочтыДляGit) Экспорт + + ДоменПочтыДляGitПоУмолчанию = НовыйДоменПочтыДляGit; + Возврат ЭтотОбъект; + +КонецФункции + // Устанавливает версию платформы 1С // // Параметры: @@ -145,6 +161,21 @@ КонецФункции +// Устанавливает путь к исполняемому файлу git +// +// Параметры: +// НовыйПутьКИсполняемомуФайлуГит - Строка - путь к исполняемому файлу git +// +// Возвращаемое значение: +// Объект.МенеджерСинхронизации - ссылка на текущий объект класса <МенеджерСинхронизации> +// +Функция ИсполняемыйФайлГит(Знач НовыйПутьКИсполняемомуФайлуГит) Экспорт + + ПутьКИсполняемомуФайлуGit = НовыйПутьКИсполняемомуФайлуГит; + Возврат ЭтотОбъект; + +КонецФункции + // Основная функция синхронизации. // Перемещает в git набор коммитов хранилища 1С // @@ -604,7 +635,11 @@ ГитРепозиторий = Новый ГитРепозиторий; ГитРепозиторий.УстановитьРабочийКаталог(КаталогРабочейКопии); ГитРепозиторий.УстановитьТихийРежимРаботы(); - + + Если ЗначениеЗаполнено(ПутьКИсполняемомуФайлуGit) Тогда + ГитРепозиторий.УстановитьПутьКГит(ПутьКИсполняемомуФайлуGit); + КонецЕсли; + ГитРепозиторий.УстановитьНастройку("core.quotepath", "false", РежимУстановкиНастроекGit.Локально); ГитРепозиторий.УстановитьНастройку("merge.ours.driver", "true", РежимУстановкиНастроекGit.Локально); @@ -1276,38 +1311,39 @@ КонецФункции -Функция ЗапуститьПриложениеИДождатьсяЗавершения(Знач СтрокаЗапуска, Знач ТекущийКаталог = "\.") - - Результат = -1; - Если НЕ ЭтоWindows И ТекущийКаталог = "\." Тогда - ТекущийКаталог = "./"; +Процедура ЗавершитьПроцесс_TGitCache_exe() + + Если Не ЭтоWindows Тогда + Возврат; КонецЕсли; - Попытка - КодВозврата = ""; - ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); - Результат = КодВозврата; - Исключение - // Для x64 ОС - Если ЭтоWindows Тогда - СтрокаЗапуска = "%windir%\Sysnative\" + СтрокаЗапуска; - КодВозврата = ""; - ЗапуститьПриложение(СтрокаЗапуска, ТекущийКаталог, Истина, КодВозврата); - Результат = КодВозврата; - КонецЕсли; - КонецПопытки; + ИмяПроцессаКешаГит = "TGitCache.exe"; - Возврат Результат; + МассивПроцессов = НайтиПроцессыПоИмени(ИмяПроцессаКешаГит); + + Если МассивПроцессов.Количество() = 0 Тогда + Возврат; + КонецЕсли; -КонецФункции // ЗапуститьПриложениеИДождатьсяЗавершения() + КомандаTaskKill = Новый Команда; + КомандаTaskKill.УстановитьКоманду("taskkill"); + КомандаTaskKill.ДобавитьПараметр("/im"); + КомандаTaskKill.ДобавитьПараметр(ИмяПроцессаКешаГит); + КомандаTaskKill.ДобавитьПараметр("/T"); + КомандаTaskKill.ДобавитьПараметр("/F"); + КомандаTaskKill.ДобавитьЛогВыводаКоманды(ИмяЛога()); -Процедура ЗавершитьПроцесс_TGitCache_exe() - Если ЭтоWindows Тогда - СтрокаКоманды = "taskkill /im TGitCache.exe /T /F"; - Лог.Отладка("ЗавершитьПроцесс_TGitCache_exe: команда "+ СтрокаКоманды); + КодВозврата = КомандаTaskKill.Исполнить(); + + Если КодВозврата <> 0 Тогда + КомандаTaskKill.УстановитьКоманду("%windir%/Sysnative/taskkill"); + КодВозврата = КомандаTaskKill.Исполнить(); + КонецЕсли; - ЗапуститьПриложениеИДождатьсяЗавершения(СтрокаКоманды); + Если КодВозврата <> 0 Тогда + Лог.КритичнаяОшибка("Не удалось завершить процесс <%>", ИмяПроцессаКешаГит); КонецЕсли; + КонецПроцедуры Функция ФорматДвузначноеЧисло(ЗначениеЧисло) diff --git a/tasks/get-plugins.os b/tasks/get-plugins.os index e6c46bdf..4d5c5f86 100644 --- a/tasks/get-plugins.os +++ b/tasks/get-plugins.os @@ -48,13 +48,16 @@ КонецПроцедуры -Процедура ПолезнаяРабота() +Процедура ПолезнаяРабота(ИмяВетки) URLРепозитория = "https://github.com/khorevaa/gitsync-plugins.git"; КаталогСборки = ВременныеФайлы.СоздатьКаталог(); - Ветка = "master"; - ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); + Лог.Информация("Установка плагинов из + | репозиторий <%1> + | ветки <%2>", URLРепозитория, ИмяВетки); + + ПолучитьИсходники(URLРепозитория, ИмяВетки, КаталогСборки); СобратьПакет(КаталогСборки); ВременныеФайлы.УдалитьФайл(КаталогСборки); @@ -63,6 +66,12 @@ Лог = Логирование.ПолучитьЛог("task.install-opm"); -ПолезнаяРабота(); +Если АргументыКоманднойСтроки.Количество() = 0 Тогда + ИмяВетки = "master"; +Иначе + ИмяВетки = АргументыКоманднойСтроки[0]; +КонецЕсли; + +ПолезнаяРабота(ИмяВетки); diff --git a/tasks/install-opm.os b/tasks/install-opm.os index b4fbc38f..6fe65b98 100644 --- a/tasks/install-opm.os +++ b/tasks/install-opm.os @@ -70,11 +70,14 @@ КонецПроцедуры -Процедура ПолезнаяРабота() +Процедура ПолезнаяРабота(Ветка) URLРепозитория = "https://github.com/khorevaa/opm.git"; КаталогСборки = ВременныеФайлы.СоздатьКаталог(); - Ветка = "develop"; + // Ветка = ""; + Лог.Информация("Установка плагинов из + | репозиторий <%1> + | ветки <%2>", URLРепозитория, Ветка); ПутьКМанифестуСборки = ОбъединитьПути(ТекущийСценарий().Каталог, "opm_packagedef"); @@ -87,6 +90,12 @@ Лог = Логирование.ПолучитьЛог("task.install-opm"); -ПолезнаяРабота(); +Если АргументыКоманднойСтроки.Количество() = 0 Тогда + ИмяВетки = "master"; +Иначе + ИмяВетки = АргументыКоманднойСтроки[0]; +КонецЕсли; + +ПолезнаяРабота(ИмяВетки); diff --git a/travis-ci.sh b/travis-ci.sh index 05c82c09..5c1118be 100644 --- a/travis-ci.sh +++ b/travis-ci.sh @@ -24,7 +24,7 @@ echo "===================================" echo "Установка opm из develop" opm run install-opm-global; -cat /usr/bin/opm +# cat /usr/bin/opm echo "===================================" echo "Запуск тестирования пакета"