diff --git a/bin/v8unpack/v8unpack.exe b/bin/v8unpack/v8unpack.exe new file mode 100644 index 0000000..af7ade9 Binary files /dev/null and b/bin/v8unpack/v8unpack.exe differ diff --git a/bin/v8unpack/zlib1.dll b/bin/v8unpack/zlib1.dll new file mode 100644 index 0000000..1cf8a47 Binary files /dev/null and b/bin/v8unpack/zlib1.dll differ diff --git a/packagedef b/packagedef index 2082d89..cffb43a 100644 --- a/packagedef +++ b/packagedef @@ -6,7 +6,20 @@ ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules")); - //Лог.Информация("Установка локальных зависимостей библиотек"); + Сообщить("Запаковка бинарных данных библиотек"); + КомандаOpm = Новый Команда; + + КомандаOpm.УстановитьКоманду("opm"); + КомандаOpm.ДобавитьПараметр("run packdata "); + КомандаOpm.ДобавитьЛогВыводаКоманды("task.build"); + + КодВозврата = КомандаOpm.Исполнить(); + + Если КодВозврата <> 0 Тогда + ВызватьИсключение КомандаOpm.ПолучитьВывод(); + КонецЕсли; + + Сообщить("Установка локальных зависимостей библиотек"); КомандаOpm = Новый Команда; КомандаOpm.УстановитьКоманду("opm"); @@ -16,7 +29,7 @@ КодВозврата = КомандаOpm.Исполнить(); Если КодВозврата <> 0 Тогда - ВызватьИсключение КомандаOpm.ПолучитьВывод(); + ВызватьИсключение КомандаOpm.ПолучитьВывод(); КонецЕсли; КонецПроцедуры @@ -42,4 +55,7 @@ .ОпределяетКласс("Плагин_СинхронизацииСУдаленнымРепозиторием", "src/Классы/syncRemote.os") .ОпределяетКласс("Плагин_ВыгрузкаВФорматеEDT", "src/Классы/edtExport.os") .ОпределяетКласс("Плагин_ЗаменаАвторов", "src/Классы/replaceAuthors.os") + .ОпределяетКласс("Плагин_Ibcmd", "src/Классы/useIbcmd.os") + .ОпределяетКласс("Плагин_DropConfigDump", "src/Классы/dropConfigDump.os") + .ОпределяетКласс("Плагин_DropSupport", "src/Классы/dropSupport.os") ; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" new file mode 100644 index 0000000..0cbcdbe --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropConfigDump.os" @@ -0,0 +1,301 @@ +#Использовать logos +#Использовать gitsync + +Перем Лог; // Лог - объект протоколирования (logger) +Перем Обработчик; // Команда - обработчик текущей команды gitsync +Перем КомандыПлагина; // Массив из Строка - список команд к которым подключается текущий плагин +Перем ТекущаяКоманда; // Строка - имя выполняемой команды gitsync + +Перем ЗакоммититьФайлИгнорируемыхИзменений; // Булево - Истина - закоммитить файл .gitignore. + +#Область Интерфейс_плагина + +// Возвращает версию плагина +// +// Возвращаемое значение: +// Строка - текущая версия плагина +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает приоритет выполнения плагина +// +// Возвращаемое значение: +// Число - приоритет выполнения плагина +// +Функция Приоритет() Экспорт + Возврат 0; +КонецФункции + +// Возвращает описание плагина +// +// Возвращаемое значение: +// Строка - описание функциональности плагина +// +Функция Описание() Экспорт + Возврат "Плагин отключает версионирование файла дампа версий объектов конфигурации (ConfigDumpInfo.xml) + |и удаляет его после выгрузки конфигурации в файлы."; +КонецФункции + +// Возвращает подробную справку к плагину +// +// Возвращаемое значение: +// Строка - подробная справка для плагина +// +Функция Справка() Экспорт + Возврат "Плагин отключает версионирование файла дампа версий объектов конфигурации (ConfigDumpInfo.xml) + |и удаляет его после выгрузки конфигурации в файлы."; +КонецФункции + +// Возвращает имя плагина +// +// Возвращаемое значение: +// Строка - имя плагина при подключении +// +Функция Имя() Экспорт + Возврат "drop-config-dump"; +КонецФункции + +// Возвращает имя лога плагина +// +// Возвращаемое значение: +// Строка - имя лога плагина +// +Функция ИмяЛога() Экспорт + Возврат СтрШаблон("oscript.lib.gitsync.plugins.%1", Имя()); +КонецФункции + +#КонецОбласти + +#Область Подписки_на_события + +Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт + + Обработчик = СтандартныйОбработчик; + + Если НЕ (ВРег(ТекущаяКоманда) = "ALL" + ИЛИ ВРег(ТекущаяКоманда) = "SYNC") Тогда + Возврат; + КонецЕсли; + + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); + ОтключаемыеПлагины = ОтключаемыеПлагины(); + + Для Каждого ТекЭлемент Из ИндексПлагинов Цикл + Если ОтключаемыеПлагины.Найти(ВРег(ТекЭлемент.Ключ)) = Неопределено Тогда + Продолжить; + КонецЕсли; + Если НЕ ТекЭлемент.Значение.Включен() Тогда + Продолжить; + КонецЕсли; + + Лог.Информация("Плагин ""%1"" не совместим с плагином ""%2"" и будет отключен на время выполнения синхронизации!", + ТекЭлемент.Ключ, + Имя()); + ТекЭлемент.Значение.Отключить(); + + КонецЦикла; + +КонецПроцедуры + +Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт + + ТекущаяКоманда = ИмяКоманды; + + Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды); + Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт + +КонецПроцедуры + +Процедура ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор, + КаталогРабочейКопии, + КаталогВыгрузки, + ПутьКХранилищу, + НомерВерсии) Экспорт + + УдалитьФайлДампаИзменений(КаталогРабочейКопии); + +КонецПроцедуры + +Процедура ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки) Экспорт + + УдалитьФайлДампаИзменений(КаталогВыгрузки); + +КонецПроцедуры + +Процедура ПередКоммитом(КаталогРабочейКопии, Комментарий, Автор, Дата) Экспорт + + КорневойКаталогГит = КорневойКаталогГит(КаталогРабочейКопии); + + Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда + Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", КаталогРабочейКопии); + Возврат; + КонецЕсли; + + ПутьКФайлуДампаИзменений = ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДампаИзменений()); + ФайлИгнорируемыхИзменений = Новый Файл(ОбъединитьПути(КорневойКаталогГит, ".gitignore")); + ТекстИгнорируемыхИзменений = Новый ТекстовыйДокумент(); + + Если ФайлИгнорируемыхИзменений.Существует() И ФайлИгнорируемыхИзменений.ЭтоФайл() Тогда + Лог.Отладка("Найден файл игнорируемых изменений ""%1"".", ФайлИгнорируемыхИзменений.ПолноеИмя); + ТекстИгнорируемыхИзменений.Прочитать(ФайлИгнорируемыхИзменений.ПолноеИмя); + КонецЕсли; + + ОтносительныйПуть = СтрЗаменить(ПутьКФайлуДампаИзменений, КорневойКаталогГит, ""); + + Для НомерСтроки = 1 По ТекстИгнорируемыхИзменений.КоличествоСтрок() Цикл + ТекСтрока = ТекстИгнорируемыхИзменений.ПолучитьСтроку(НомерСтроки); + Если СтрНайти(ТекСтрока, ОтносительныйПуть) > 0 Тогда + Возврат; + КонецЕсли; + КонецЦикла; + + ТекстИгнорируемыхИзменений.ДобавитьСтроку(ОтносительныйПуть); + ТекстИгнорируемыхИзменений.Записать(ФайлИгнорируемыхИзменений.ПолноеИмя); + Лог.Отладка("Файл дампа изменений ""%1"" добавлен в файл игнорируемых изменений ""%2"".", + ОтносительныйПуть, + ФайлИгнорируемыхИзменений.ПолноеИмя); + + ЗакоммититьФайлИгнорируемыхИзменений = Истина; + +КонецПроцедуры + +Процедура ПриКоммите(ГитРепозиторий, + Комментарий, + ПроиндексироватьОтслеживаемыеФайлы, + ИмяФайлаКомментария, + АвторДляГит, + ДатаДляГит, + Коммитер, + ДатаКоммитера) Экспорт + + Если НЕ ЗакоммититьФайлИгнорируемыхИзменений Тогда + Возврат; + КонецЕсли; + + РабочийКаталог = ГитРепозиторий.ПолучитьРабочийКаталог(); + КорневойКаталогГит = КорневойКаталогГит(РабочийКаталог); + + Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда + Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", РабочийКаталог); + Возврат; + КонецЕсли; + + ФайлИгнорируемыхИзменений = Новый Файл(ОбъединитьПути(КорневойКаталогГит, ".gitignore")); + + ПараметрыКомандыГит = Новый Массив(); + ПараметрыКомандыГит.Добавить("add"); + ПараметрыКомандыГит.Добавить("-A"); + ПараметрыКомандыГит.Добавить(ФайлИгнорируемыхИзменений.ПолноеИмя); + + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКомандыГит); + +КонецПроцедуры + +#КонецОбласти + +#Область Вспомогательные_процедуры_и_функции + +// Функция возвращает путь к корневому каталогу репозитария git +// +// Параметры: +// КаталогРабочейКопии - Строка - проверяемый каталог +// +// Возвращаемое значение: +// Строка - путь к корневому каталогу репозитария git +// если пустая строка, то каталог не является репозитарием git +// +Функция КорневойКаталогГит(Знач КаталогРабочейКопии) + + ТекущийКаталог = Новый Файл(КаталогРабочейКопии); + + ЭтоКорневойКаталог = (ТекущийКаталог.ПолноеИмя = "/" + ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 1) = ":" + ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 2) = ":/" + ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 2) = ":\"); + + Если ЭтоКорневойКаталог Тогда + Возврат ""; + КонецЕсли; + + СлужебныйКаталогГит = Новый Файл(ОбъединитьПути(ТекущийКаталог.ПолноеИмя, ".git")); + + Если СлужебныйКаталогГит.Существует() И СлужебныйКаталогГит.ЭтоКаталог() Тогда + Возврат ТекущийКаталог.ПолноеИмя; + Иначе + Возврат КорневойКаталогГит(ТекущийКаталог.Путь); + КонецЕсли; + +КонецФункции // КорневойКаталогГит() + +// Процедура удаляет файл дампа изменений (ConfigDumpInfo.xml) в указаном каталоге +// +// Параметры: +// КаталогРабочейКопии - Строка - проверяемый каталог +// +Процедура УдалитьФайлДампаИзменений(КаталогРабочейКопии) + + ФайлДампаИзменений = Новый Файл(ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДампаИзменений())); + + Если ФайлДампаИзменений.Существует() Тогда + Лог.Отладка("Удаляем файл дампа изменений ""%1"".", ФайлДампаИзменений.ПолноеИмя); + УдалитьФайлы(ФайлДампаИзменений.ПолноеИмя); + КонецЕсли; + +КонецПроцедуры // УдалитьФайлДампаИзменений() + +// Функция возвращает имя файла дампа изменений +// +// Возвращаемое значение: +// Строка - "ConfigDumpInfo.xml" имя файла дампа изменений +// +Функция ИмяФайлаДампаИзменений() + Возврат "ConfigDumpInfo.xml"; +КонецФункции // ИмяФайлаДампаИзменений() + +// Функция возвращает имя плагина инкрементальной выгрузки +// +// Возвращаемое значение: +// Строка - "INCREMENT" имя плагина инкрементальной выгрузки +// +Функция ИмяПлагинаИнкрементальнойВыгрузки() + Возврат "INCREMENT"; +КонецФункции // ИмяПлагинаИнкрементальнойВыгрузки() + +// Функция возвращает имя плагина инкрементальной выгрузки +// +// Возвращаемое значение: +// ФиксированныйМассив из Строка - список отключаемых плагинов +// +Функция ОтключаемыеПлагины() + + ОтключаемыеПлагины = Новый Массив(); + ОтключаемыеПлагины.Добавить(ИмяПлагинаИнкрементальнойВыгрузки()); + + Возврат Новый ФиксированныйМассив(ОтключаемыеПлагины); + +КонецФункции // ОтключаемыеПлагины() + +#КонецОбласти + +Процедура Инициализация() + + Лог = Логирование.ПолучитьЛог(ИмяЛога()); + + КомандыПлагина = Новый Массив; + КомандыПлагина.Добавить("init"); + КомандыПлагина.Добавить("sync"); + + ЗакоммититьФайлИгнорируемыхИзменений = Ложь; + +КонецПроцедуры + +Инициализация(); diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" new file mode 100644 index 0000000..7e98965 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/dropSupport.os" @@ -0,0 +1,273 @@ +#Использовать logos +#Использовать gitsync + +Перем Лог; // Лог - объект протоколирования (logger) +Перем Обработчик; // Команда - обработчик текущей команды gitsync +Перем КомандыПлагина; // Массив из Строка - список команд к которым подключается текущий плагин +Перем ТекущаяКоманда; // Строка - имя выполняемой команды gitsync + +Перем ЗакоммититьФайлИгнорируемыхИзменений; // Булево - Истина - закоммитить файл .gitignore. + +#Область Интерфейс_плагина + +// Возвращает версию плагина +// +// Возвращаемое значение: +// Строка - текущая версия плагина +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает приоритет выполнения плагина +// +// Возвращаемое значение: +// Число - приоритет выполнения плагина +// +Функция Приоритет() Экспорт + Возврат 0; +КонецФункции + +// Возвращает описание плагина +// +// Возвращаемое значение: +// Строка - описание функциональности плагина +// +Функция Описание() Экспорт + Возврат "Плагин удаляет информацию о поддержке. + |Удаляет файлы конфигураций поставщика поддержки (*.cf) и очищает файл настроек поддержки (ParentConfiguration.bin)."; +КонецФункции + +// Возвращает подробную справку к плагину +// +// Возвращаемое значение: +// Строка - подробная справка для плагина +// +Функция Справка() Экспорт + Возврат "Плагин удаляет информацию о поддержке. + |Удаляет файлы конфигураций поставщика поддержки (*.cf) и очищает файл настроек поддержки (ParentConfiguration.bin)."; +КонецФункции + +// Возвращает имя плагина +// +// Возвращаемое значение: +// Строка - имя плагина при подключении +// +Функция Имя() Экспорт + Возврат "drop-support"; +КонецФункции + +// Возвращает имя лога плагина +// +// Возвращаемое значение: +// Строка - имя лога плагина +// +Функция ИмяЛога() Экспорт + Возврат СтрШаблон("oscript.lib.gitsync.plugins.%1", Имя()); +КонецФункции + +#КонецОбласти + +#Область Подписки_на_события + +Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт + + Обработчик = СтандартныйОбработчик; + +КонецПроцедуры + +Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт + + ТекущаяКоманда = ИмяКоманды; + + Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды); + Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда + Возврат; + КонецЕсли; + +КонецПроцедуры + +Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт + +КонецПроцедуры + +Процедура ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор, + КаталогРабочейКопии, + КаталогВыгрузки, + ПутьКХранилищу, + НомерВерсии) Экспорт + + УдалитьИнформациюОПоддержке(КаталогРабочейКопии); + +КонецПроцедуры + +Процедура ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки) Экспорт + + УдалитьИнформациюОПоддержке(КаталогВыгрузки); + +КонецПроцедуры + +Процедура ПередКоммитом(КаталогРабочейКопии, Комментарий, Автор, Дата) Экспорт + + КорневойКаталогГит = КорневойКаталогГит(КаталогРабочейКопии); + + Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда + Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", КаталогРабочейКопии); + Возврат; + КонецЕсли; + + КаталогПоддержки = ОбъединитьПути(КаталогРабочейКопии, "Ext", "ParentConfigurations"); + ФайлИгнорируемыхИзменений = Новый Файл(ОбъединитьПути(КорневойКаталогГит, ".gitignore")); + ТекстИгнорируемыхИзменений = Новый ТекстовыйДокумент(); + + Если ФайлИгнорируемыхИзменений.Существует() И ФайлИгнорируемыхИзменений.ЭтоФайл() Тогда + ТекстИгнорируемыхИзменений.Прочитать(ФайлИгнорируемыхИзменений.ПолноеИмя); + КонецЕсли; + + ОтносительныйПуть = СтрШаблон("%1%2*.cf", + СтрЗаменить(КаталогПоддержки, КорневойКаталогГит, ""), + ПолучитьРазделительПути()); + + Для НомерСтроки = 1 По ТекстИгнорируемыхИзменений.КоличествоСтрок() Цикл + ТекСтрока = ТекстИгнорируемыхИзменений.ПолучитьСтроку(НомерСтроки); + Если СтрНайти(ТекСтрока, ОтносительныйПуть) > 0 Тогда + Возврат; + КонецЕсли; + КонецЦикла; + + ТекстИгнорируемыхИзменений.ДобавитьСтроку(ОтносительныйПуть); + ТекстИгнорируемыхИзменений.Записать(ФайлИгнорируемыхИзменений.ПолноеИмя); + + ЗакоммититьФайлИгнорируемыхИзменений = Истина; + +КонецПроцедуры + +Процедура ПриКоммите(ГитРепозиторий, + Комментарий, + ПроиндексироватьОтслеживаемыеФайлы, + ИмяФайлаКомментария, + АвторДляГит, + ДатаДляГит, + Коммитер, + ДатаКоммитера) Экспорт + + Если НЕ ЗакоммититьФайлИгнорируемыхИзменений Тогда + Возврат; + КонецЕсли; + + РабочийКаталог = ГитРепозиторий.ПолучитьРабочийКаталог(); + КорневойКаталогГит = КорневойКаталогГит(РабочийКаталог); + + Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда + Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", РабочийКаталог); + Возврат; + КонецЕсли; + + ФайлИгнорируемыхИзменений = Новый Файл(ОбъединитьПути(КорневойКаталогГит, ".gitignore")); + + ПараметрыКомандыГит = Новый Массив(); + ПараметрыКомандыГит.Добавить("add"); + ПараметрыКомандыГит.Добавить("-A"); + ПараметрыКомандыГит.Добавить(ФайлИгнорируемыхИзменений.ПолноеИмя); + + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКомандыГит); + +КонецПроцедуры + +#КонецОбласти + +#Область Вспомогательные_процедуры_и_функции + +// Функция возвращает путь к корневому каталогу репозитария git +// +// Параметры: +// КаталогРабочейКопии - Строка - проверяемый каталог +// +// Возвращаемое значение: +// Строка - путь к корневому каталогу репозитария git +// если пустая строка, то каталог не является репозитарием git +// +Функция КорневойКаталогГит(Знач КаталогРабочейКопии) + + ТекущийКаталог = Новый Файл(КаталогРабочейКопии); + + ЭтоКорневойКаталог = (ТекущийКаталог.ПолноеИмя = "/" + ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 1) = ":" + ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 2) = ":/" + ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 2) = ":\"); + + Если ЭтоКорневойКаталог Тогда + Возврат ""; + КонецЕсли; + + СлужебныйКаталогГит = Новый Файл(ОбъединитьПути(ТекущийКаталог.ПолноеИмя, ".git")); + + Если СлужебныйКаталогГит.Существует() И СлужебныйКаталогГит.ЭтоКаталог() Тогда + Возврат ТекущийКаталог.ПолноеИмя; + Иначе + Возврат КорневойКаталогГит(ТекущийКаталог.Путь); + КонецЕсли; + +КонецФункции // КорневойКаталогГит() + +// Процедура удаляет файлы конфигураций поставщика (*.cf) +// и очищает информацию о поддержке в файле ParentConfigurations.bin +// +// Параметры: +// КаталогРабочейКопии - Строка - обрабатываемый каталог +// +Процедура УдалитьИнформациюОПоддержке(КаталогРабочейКопии) + + КаталогОбщихДанныхКонфигурации = ОбъединитьПути(КаталогРабочейКопии, "Ext"); + КаталогПоддержки = ОбъединитьПути(КаталогОбщихДанныхКонфигурации, "ParentConfigurations"); + ФайлыПоставщика = НайтиФайлы(КаталогПоддержки, "*.cf"); + + Для Каждого ТекФайлПоставщика Из ФайлыПоставщика Цикл + Лог.Отладка("Удаляем файл поставщика ""%1"".", ТекФайлПоставщика.ПолноеИмя); + УдалитьФайлы(ТекФайлПоставщика.ПолноеИмя); + КонецЦикла; + + ФайлПоддержки = Новый Файл(ОбъединитьПути(КаталогОбщихДанныхКонфигурации, "ParentConfigurations.bin")); + ТекстПоддержки = Новый ТекстовыйДокумент(); + Если ФайлПоддержки.Существует() И ФайлПоддержки.ЭтоФайл() Тогда + ТекстПоддержки.Прочитать(ФайлПоддержки.ПолноеИмя); + КонецЕсли; + + Если ТекстПоддержки.КоличествоСтрок() = 1 Тогда + ТекСтрока = ТекстПоддержки.ПолучитьСтроку(1); + Если СтрНайти(ТекСтрока, ТекстОтключеннойПоддержки()) > 0 Тогда + Возврат; + КонецЕсли; + КонецЕсли; + + ТекстПоддержки.УстановитьТекст(ТекстОтключеннойПоддержки()); + ТекстПоддержки.Записать(ФайлПоддержки.ПолноеИмя); + Лог.Отладка("Отключена поддержка в файле ""%1"".", ФайлПоддержки.ПолноеИмя); + +КонецПроцедуры // УдалитьИнформациюОПоддержке() + +// Функция возвращает текст файла ParentConfigurations.bin для отключения поддержки +// +// Возвращаемое значение: +// Строка - текст файла ParentConfigurations.bin для отключения поддержки +// +Функция ТекстОтключеннойПоддержки() + + Возврат "{6,0,0,0,1,0}"; + +КонецФункции // ТекстОтключеннойПоддержки() + +#КонецОбласти + +Процедура Инициализация() + + Лог = Логирование.ПолучитьЛог(ИмяЛога()); + + КомандыПлагина = Новый Массив; + КомандыПлагина.Добавить("sync"); + + ЗакоммититьФайлИгнорируемыхИзменений = Ложь; + +КонецПроцедуры + +Инициализация(); diff --git "a/src/\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/zlib1_gitsync_plugins.os" "b/src/\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/zlib1_gitsync_plugins.os" new file mode 100644 index 0000000..83a6ace --- /dev/null +++ "b/src/\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/zlib1_gitsync_plugins.os" @@ -0,0 +1,34 @@ + +/////////////////////////////////////////// +// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ // +/////////////////////////////////////////// +// +// ФАЙЛ: +// + +// Возвращает версию запакованного файла +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает имя запакованного файла +// +Функция ИмяФайла() Экспорт + Возврат "zlib1.dll"; +КонецФункции + +// Возвращает хеш строку запакованного файла +// +Функция Хеш() Экспорт + Возврат "80E41408F6D641DC1C0F5353A0CC8125"; +КонецФункции + +// Возвращает запакованные данные файла +// +Функция ДвоичныеДанные() Экспорт + ЗапакованныеДанные = "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AwAAAAMAAAAEAAAABAAAAAQAAAAEAAAABQAAAAUAAAAFAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAADAAAABwAAABAREgAIBwkGCgULBAwDDQIOAQ8ADAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA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b2RlAGludmFsaWQgZGlzdGFuY2VzIHNldAAAAGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AAAAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AAAAAHRvbyBtYW55IGxlbmd0aCBvciBkaXN0YW5jZSBzeW1ib2xzAGludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMAAAAAaW52YWxpZCBibG9jayB0eXBlAABpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAABpbmNvcnJlY3QgZGF0YSBjaGVjawAAAABoZWFkZXIgY3JjIG1pc21hdGNoAHVua25vd24gaGVhZGVyIGZsYWdzIHNldAAAAABpbnZhbGlkIHdpbmRvdyBzaXplAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAABpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAABpbmNvbXBhdGlibGUgdmVyc2lvbgAAAABidWZmZXIgZXJyb3IAAAAAaW5zdWZmaWNpZW50IG1lbW9yeQBkYXRhIGVycm9yAABzdHJlYW0gZXJyb3IAAAAAZmlsZSBlcnJvcgAAc3RyZWFtIGVuZAAAbmVlZCBkaWN0aW9uYXJ5AKjwAAAAAAAAAAAAAJ7xAAAIsAAAoPAAAAAAAAAAAAAA4vEAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMbxAAAAAAAACvEAABLxAAAc8QAAKPEAADLxAAA88QAARPEAAEzxAABW8QAAAPEAAG7xAAB28QAAfvEAAIjxAACU8QAAqvEAALbxAABk8QAA+PAAAAAAAABZAmZwdXRjALICc3ByaW50ZgBeAmZyZWUAAJECbWFsbG9jAAC8AnN0cmVycm9yAABPAmZmbHVzaAAAyABfZXJybm8AAFcCZm9wZW4AXQJmcmVhZABYAmZwcmludGYA4QFfdnNucHJpbnRmAABmAmZ3cml0ZQAAZAJmdGVsbABiAmZzZWVrAEwCZmNsb3NlAABCAmNsZWFyZXJyAADXAF9mZG9wZW4ATVNWQ1JULmRsbAAADwFfaW5pdHRlcm0AnQBfYWRqdXN0X2ZkaXYAAF0ARGlzYWJsZVRocmVhZExpYnJhcnlDYWxscwBLRVJORUwzMi5kbGwAAAAAAADZHd5C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"; + Возврат ЗапакованныеДанные; +КонецФункции + + diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\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_v8unpack.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\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_v8unpack.os" deleted file mode 100644 index 66d3465..0000000 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/internal/v8unpack/\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_v8unpack.os" +++ /dev/null @@ -1,11 +0,0 @@ -#Использовать "../../bindata" - -// Выполняет подключение внешней библиотеки -// -Процедура ВыполнитьЗагрузку() Экспорт - - ЗагрузчикДвоичныхДанных = Новый ЗагрузчикЗапакованныхФайловGitsyncPlugins; - ПутьКФайлу = ЗагрузчикДвоичныхДанных.ПолучитьПутьКФайлу("v8unpack.dll"); - ПодключитьВнешнююКомпоненту(ПутьКФайлу); - -КонецПроцедуры diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" new file mode 100644 index 0000000..7eeed47 --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/useIbcmd.os" @@ -0,0 +1,444 @@ +#Использовать logos +#Использовать v8find +#Использовать 1commands +#Использовать gitsync + +Перем Лог; // Лог - объект протоколирования (logger) +Перем Обработчик; // Команда - обработчик текущей команды gitsync +Перем КомандыПлагина; // Массив из Строка - список команд к которым подключается текущий плагин +Перем ТекущаяКоманда; // Строка - имя выполняемой команды gitsync + +Перем РабочийКаталогIBCMD; // Строка - путь к рабочему каталогу утилиты ibcmd +Перем ТипСУБД; // Строка - тип сервера базы данных +Перем СерверБД; // Строка - адрес сервера базы данных +Перем ИмяБД; // Строка - имя базы данных +Перем ПользовательБД; // Строка - имя пользователя базы данных +Перем ПарольБД; // Строка - пароль пользователя базы данных +Перем Инкрементально; // Булево - Истина - будет выполнена инкрементальная выгрузка если возможно + +Перем ИнкрементальнаяВыгрузкаВозможна; // Булево - Истина - инкрементальная выгрузка возможна +Перем ПутьКФайлуДампаИзменений; // Строка - путь к файлу ConfigDumpInfo.xml + +#Область Интерфейс_плагина + +// Возвращает версию плагина +// +// Возвращаемое значение: +// Строка - текущая версия плагина +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает приоритет выполнения плагина +// +// Возвращаемое значение: +// Число - приоритет выполнения плагина +// +Функция Приоритет() Экспорт + Возврат 0; +КонецФункции + +// Возвращает описание плагина +// +// Возвращаемое значение: +// Строка - описание функциональности плагина +// +Функция Описание() Экспорт + Возврат "Плагин включает использование утилиты ibcmd для выгрузки конфигурации в файлы"; +КонецФункции + +// Возвращает подробную справку к плагину +// +// Возвращаемое значение: +// Строка - подробная справка для плагина +// +Функция Справка() Экспорт + Возврат "Плагин включает использование утилиты ibcmd для выгрузки конфигурации в файлы + |Рекомендуется отключить плагин ""increment"", если он используется + |и использовать флаг --increment для инкрементальной выгрузки."; +КонецФункции + +// Возвращает имя плагина +// +// Возвращаемое значение: +// Строка - имя плагина при подключении +// +Функция Имя() Экспорт + Возврат "use-ibcmd"; +КонецФункции + +// Возвращает имя лога плагина +// +// Возвращаемое значение: +// Строка - имя лога плагина +// +Функция ИмяЛога() Экспорт + Возврат СтрШаблон("oscript.lib.gitsync.plugins.%1", Имя()); +КонецФункции + +#КонецОбласти + +#Область Подписки_на_события + +Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт + + Обработчик = СтандартныйОбработчик; + + РабочийКаталогIBCMD = ""; + ТипСУБД = "MSSQLServer"; + СерверБД = "localhost"; + ИмяБД = ""; + ПользовательБД = "sa"; + ПарольБД = ""; + Инкрементально = Ложь; + + Если НЕ (ВРег(ТекущаяКоманда) = "ALL" + ИЛИ ВРег(ТекущаяКоманда) = "SYNC") Тогда + Возврат; + КонецЕсли; + + МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов(); + ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов(); + ОтключаемыеПлагины = ОтключаемыеПлагины(); + + Для Каждого ТекЭлемент Из ИндексПлагинов Цикл + Если ОтключаемыеПлагины.Найти(ВРег(ТекЭлемент.Ключ)) = Неопределено Тогда + Продолжить; + КонецЕсли; + Если НЕ ТекЭлемент.Значение.Включен() Тогда + Продолжить; + КонецЕсли; + + Лог.Информация("Плагин ""%1"" не совместим с плагином ""%2"" и будет отключен на время выполнения синхронизации!", + ТекЭлемент.Ключ, + Имя()); + ТекЭлемент.Значение.Отключить(); + Если ВРег(ТекЭлемент.Ключ) = ИмяПлагинаИнкрементальнойВыгрузки() Тогда + Лог.Информация("Плагин ""%1"" отключен, будет использован параметр ""--increment""!", ТекЭлемент.Ключ); + Инкрементально = Истина; + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт + + ТекущаяКоманда = ИмяКоманды; + + Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды); + Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда + Возврат; + КонецЕсли; + + Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); + + КлассРеализации.Опция("d ibcmd-data", "", "[*use-ibcmd] рабочий каталог утилиты ibcmd") + .ТСтрока() + .ВОкружении("GITSYNC_IBCMD_DATA"); + + КлассРеализации.Опция("t ibcmd-dbms", "MSSQLServer", "[*use-ibcmd] тип СУБД (при использовании ibcmd)") + .ТСтрока() + .ВОкружении("GITSYNC_IBCMD_DBMS"); + + КлассРеализации.Опция("s ibcmd-db-server", "", "[*use-ibcmd] адрес сервера базы данных (при использовании ibcmd)") + .ТСтрока() + .ВОкружении("GITSYNC_IBCMD_DB_SERVER"); + + КлассРеализации.Опция("n ibcmd-db-name", "", "[*use-ibcmd] имя базы данных (при использовании ibcmd)") + .ТСтрока() + .ВОкружении("GITSYNC_IBCMD_DB_NAME"); + + КлассРеализации.Опция("U ibcmd-db-user", "", "[*use-ibcmd] имя пользователя базы данных (при использовании ibcmd)") + .ТСтрока() + .ВОкружении("GITSYNC_IBCMD_DB_USER"); + + КлассРеализации.Опция("P ibcmd-db-pwd", "", "[*use-ibcmd] пароль пользователя базы данных (при использовании ibcmd)") + .ТСтрока() + .ВОкружении("GITSYNC_IBCMD_DB_PWD"); + КлассРеализации.Опция("i increment", + Ложь, + "[*use-ibcmd] флаг использования инкрементальной выгрузки конфигурации, если возможно") + .Флаговый() + .ВОкружении("GITSYNC_IBCMD_INCREMENT"); + +КонецПроцедуры + +Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт + + РабочийКаталогIBCMD = ПараметрыКоманды.Параметр("ibcmd-data" , ""); + ТипСУБД = ПараметрыКоманды.Параметр("ibcmd-dbms" , "MSSQLServer"); + СерверБД = ПараметрыКоманды.Параметр("ibcmd-db-server", "localhost"); + ИмяБД = ПараметрыКоманды.Параметр("ibcmd-db-name" , ""); + ПользовательБД = ПараметрыКоманды.Параметр("ibcmd-db-user" , "sa"); + ПарольБД = ПараметрыКоманды.Параметр("ibcmd-db-pwd" , ""); + Если НЕ Инкрементально Тогда + Инкрементально = ПараметрыКоманды.Параметр("increment", Ложь); + КонецЕсли; + +КонецПроцедуры + +Процедура ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор, + КаталогРабочейКопии, + КаталогВыгрузки, + ПутьКХранилищу, + НомерВерсии) Экспорт + + ФайлДампаИзменений = Новый Файл(ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДампаИзменений())); + ПутьКФайлуДампаИзменений = ФайлДампаИзменений.ПолноеИмя; + + ИнкрементальнаяВыгрузкаВозможна = (Инкрементально + И ИнкрементальнаяВыгрузкаВозможна(Конфигуратор, ПутьКФайлуДампаИзменений)); + +КонецПроцедуры + +Процедура ПриВыгрузкеКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки, СтандартнаяОбработка) Экспорт + + СтандартнаяОбработка = Ложь; + + Лог.Информация("Используем утилиту ibcmd для выгрузки конфигурации в файлы"); + + Попытка + ВыгрузитьКонфигурациюВФайлыIBCMD(Конфигуратор, КаталогВыгрузки); + Исключение + ТекстОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()); + Лог.Ошибка("Невозможно выгрузить конфигурацию в файлы. Ошибка:%1%2", Символы.ПС, ТекстОшибки); + ВызватьИсключение; + КонецПопытки; + +КонецПроцедуры + +Процедура ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, + СоответствиеИменФайловДляПропуска, + СтандартнаяОбработка) Экспорт + + Если Инкрементально И ИнкрементальнаяВыгрузкаВозможна Тогда + СтандартнаяОбработка = Ложь; + КонецЕсли; + +КонецПроцедуры + +#КонецОбласти + +#Область Вспомогательные_процедуры_и_функции + +// Процедура - выполняет выгрузку конфигурации в файлы с использованием утилиты ibcmd +// +// Параметры: +// Конфигуратор - УправлениеКонфигуратором - объект управления конфигуратором (v8runner) +// КаталогВыгрузки - Строка - каталог для выгрузки файлов конфигурации +// +Процедура ВыгрузитьКонфигурациюВФайлыIBCMD(Знач Конфигуратор, Знач КаталогВыгрузки) + + ИмяРасширения = Обработчик.ПолучитьИмяРасширения(); + + ПутьКIBCMD = Платформа1С.ПутьКIBCMD(Обработчик.ТекущаяВерсияПлатформы); + + КомандаIBCMD = Новый Команда; + КомандаIBCMD.УстановитьКоманду(ПутьКIBCMD); + КомандаIBCMD.ПоказыватьВыводНемедленно(Истина); + КомандаIBCMD.УстановитьКодировкуВывода("UTF-8"); + КомандаIBCMD.ДобавитьПараметр("infobase config export"); + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=%1", РабочийКаталогIBCMD)); + + ДобавитьПараметрыПодключенияКИБ(КомандаIBCMD, Конфигуратор); + + Если ИнкрементальнаяВыгрузкаВозможна Тогда + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--base=%1", ПутьКФайлуДампаИзменений)); + КонецЕсли; + Если ЗначениеЗаполнено(ИмяРасширения) Тогда + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--extension=%1", ИмяРасширения)); + КонецЕсли; + КомандаIBCMD.ДобавитьПараметр("--force"); + + ФайлКонфигурации = Новый Файл(ОбъединитьПути(КаталогВыгрузки, "Configuration.xml")); + Если ФайлКонфигурации.Существует() Тогда + КомандаIBCMD.ДобавитьПараметр("--sync"); + КонецЕсли; + + КомандаIBCMD.ДобавитьПараметр(КаталогВыгрузки); + + КодВозврата = КомандаIBCMD.Исполнить(); + + Если КодВозврата <> 0 Тогда + ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); + Лог.КритичнаяОшибка("Не удалось выгрузить конфигурацию в файлы с использованием IBCMD:%1%2", + Символы.ПС, + ТекстОшибки); + КонецЕсли; + +КонецПроцедуры // ВыгрузитьКонфигурациюВФайлыIBCMD() + +// Функция проверяет возможность инкрементальной выгрузки конфигурации в файлы +// +// Параметры: +// Конфигуратор - УправлениеКонфигуратором - объект управление конфигуратором (v8runner) +// ПутьКФайлуДампаИзменений - Строка - путь к файлу ConfigDumpInfo.xml +// +// Возвращаемое значение: +// Булево - Истина - возможна инкрементальная выгрузка +// +Функция ИнкрементальнаяВыгрузкаВозможна(Знач Конфигуратор, Знач ПутьКФайлуДампаИзменений) + + Лог.Информация("Определяю тип возможной выгрузки конфигурации в файлы"); + + ИмяРасширения = Обработчик.ПолучитьИмяРасширения(); + + ФайлДампаИзменений = Новый Файл(ПутьКФайлуДампаИзменений); + + ПутьКФайлуПроверки = ПолучитьИмяВременногоФайла("dmp"); + + Лог.Отладка("Проверяю существование файла <%1> в каталоге <%2>, файл <%3>", + ФайлДампаИзменений.Имя, + ФайлДампаИзменений.Путь, + ?(ФайлДампаИзменений.Существует(), "существует", "отсутствует")); + + Лог.Отладка("Проверяю возможность обновления выгрузки для файла <%1>", ПутьКФайлуДампаИзменений); + + ПутьКIBCMD = Платформа1С.ПутьКIBCMD(Обработчик.ТекущаяВерсияПлатформы); + + КомандаIBCMD = Новый Команда; + КомандаIBCMD.УстановитьКоманду(ПутьКIBCMD); + КомандаIBCMD.ПоказыватьВыводНемедленно(Ложь); + КомандаIBCMD.УстановитьКодировкуВывода("UTF-8"); + КомандаIBCMD.ДобавитьПараметр("infobase config export status"); + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--data=%1", РабочийКаталогIBCMD)); + + ДобавитьПараметрыПодключенияКИБ(КомандаIBCMD, Конфигуратор); + + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--base=%1", ПутьКФайлуДампаИзменений)); + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--out=%1", ПутьКФайлуПроверки)); + Если ЗначениеЗаполнено(ИмяРасширения) Тогда + КомандаIBCMD.ДобавитьПараметр(СтрШаблон("--extension=%1", ИмяРасширения)); + КонецЕсли; + + КодВозврата = КомандаIBCMD.Исполнить(); + + Если КодВозврата <> 0 Тогда + ТекстОшибки = КомандаIBCMD.ПолучитьВывод(); + Лог.КритичнаяОшибка("Не удалось получить информацию об изменениях конфигурации:%1%2", + Символы.ПС, + ТекстОшибки); + КонецЕсли; + + ФайлПроверки = Новый Файл(ПутьКФайлуПроверки); + + Если ФайлПроверки.Существует() Тогда + СтрокаПолныйДамп = "modified: all"; + ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуПроверки); + СтрокаПроверки = Лев(ЧтениеФайла.ПрочитатьСтроку(), СтрДлина(СтрокаПолныйДамп)); + + Если Не ПустаяСтрока(СокрЛП(СтрокаПроверки)) Тогда + + Лог.Отладка("Строка проверки на возможность выгрузки конфигурации: <%1> = <%2> ", СтрокаПолныйДамп, СтрокаПроверки); + Результат = НЕ (ВРег(СтрокаПроверки) = ВРег(СтрокаПолныйДамп)); + + КонецЕсли; + ЧтениеФайла.Закрыть(); + УдалитьФайлы(ПутьКФайлуПроверки); + КонецЕсли; + + Лог.Отладка("Инкрементальная выгрузка конфигурации - %1", ?(Результат, "ВОЗМОЖНА", "НЕВОЗМОЖНА")); + + СпособВыгрузки = ?(Результат, "ИНКРЕМЕНТАЛЬНАЯ ВЫГРУЗКА", "ПОЛНАЯ ВЫГРУЗКА"); + + Лог.Информация("ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы: %1%2", СпособВыгрузки, Символы.ПС); + + Возврат Результат; + +КонецФункции // ИнкрементальнаяВыгрузкаВозможна() + +// Процедура - добавляет параметры подключения к информационной базе для команды запуска утилиты ibcmd +// +// Параметры: +// Команда - Команда - объект - описание команды запуска (1commands) утилиты ibcmd +// Конфигуратор - УправлениеКонфигуратором - объект управления конфигуратором (v8runner) +// +Процедура ДобавитьПараметрыПодключенияКИБ(Команда, Конфигуратор) + + КонтекстКонфигуратора = Конфигуратор.ПолучитьКонтекст(); + + СтрокаСоединения = КонтекстКонфигуратора.КлючСоединенияСБазой; + Пользователь = КонтекстКонфигуратора.ИмяПользователя; + Пароль = КонтекстКонфигуратора.Пароль; + + СервернаяБаза = Ложь; + ПутьКБД = ""; + + Если Лев(СтрокаСоединения, 2) = "/F" Тогда + ПутьКБД = СокрЛП(Сред(СтрокаСоединения, 3)); + ИначеЕсли Лев(СтрокаСоединения, 2) = "/S" Тогда + СервернаяБаза = Истина; + ЧастиПути = СтрРазделить(Сред(СтрокаСоединения, 3), "\", Ложь); + Если НЕ ЗначениеЗаполнено(СерверБД) Тогда + СерверБД = СокрЛП(ЧастиПути[0]); + КонецЕсли; + Если НЕ ЗначениеЗаполнено(ИмяБД) И ЧастиПути.Количество() > 1 Тогда + ИмяБД = СокрЛП(ЧастиПути[1]); + КонецЕсли; + Иначе + ПутьКБД = Конфигуратор.ПутьКВременнойБазе(); + КонецЕсли; + + Если СервернаяБаза Тогда + Команда.ДобавитьПараметр(СтрШаблон("--dbms=%1", ТипСУБД)); + Команда.ДобавитьПараметр(СтрШаблон("--db-server=%1", СерверБД)); + Команда.ДобавитьПараметр(СтрШаблон("--db-name=%1", ИмяБД)); + Команда.ДобавитьПараметр(СтрШаблон("--db-user=%1", ПользовательБД)); + Команда.ДобавитьПараметр(СтрШаблон("--db-pwd=%1", ПарольБД)); + Иначе + Команда.ДобавитьПараметр(СтрШаблон("--db-path=%1", ПутьКБД)); + КонецЕсли; + Если ЗначениеЗаполнено(Пользователь) Тогда + Команда.ДобавитьПараметр(СтрШаблон("--user=%1", Пользователь)); + Если ЗначениеЗаполнено(Пароль) Тогда + Команда.ДобавитьПараметр(СтрШаблон("--pwd=%1", Пароль)); + КонецЕсли; + КонецЕсли; + +КонецПроцедуры // ДобавитьПараметрыПодключенияКИБ() + +// Функция возвращает имя файла дампа изменений +// +// Возвращаемое значение: +// Строка - "ConfigDumpInfo.xml" имя файла дампа изменений +// +Функция ИмяФайлаДампаИзменений() + Возврат "ConfigDumpInfo.xml"; +КонецФункции // ИмяФайлаДампаИзменений() + +// Функция возвращает имя плагина инкрементальной выгрузки +// +// Возвращаемое значение: +// Строка - "INCREMENT" имя плагина инкрементальной выгрузки +// +Функция ИмяПлагинаИнкрементальнойВыгрузки() + Возврат "INCREMENT"; +КонецФункции // ИмяПлагинаИнкрементальнойВыгрузки() + +// Функция возвращает имя плагина инкрементальной выгрузки +// +// Возвращаемое значение: +// ФиксированныйМассив из Строка - список отключаемых плагинов +// +Функция ОтключаемыеПлагины() + + ОтключаемыеПлагины = Новый Массив(); + ОтключаемыеПлагины.Добавить(ИмяПлагинаИнкрементальнойВыгрузки()); + + Возврат Новый ФиксированныйМассив(ОтключаемыеПлагины); + +КонецФункции // ОтключаемыеПлагины() + +#КонецОбласти + +Процедура Инициализация() + + Лог = Логирование.ПолучитьЛог(ИмяЛога()); + КомандыПлагина = Новый Массив; + КомандыПлагина.Добавить("sync"); + +КонецПроцедуры + +Инициализация(); diff --git a/tasks/install-gitsync.os b/tasks/install-gitsync.os index e758d2c..2f1c21d 100644 --- a/tasks/install-gitsync.os +++ b/tasks/install-gitsync.os @@ -11,7 +11,19 @@ ГитРепозиторий.УстановитьРабочийКаталог(Каталог); ГитРепозиторий.КлонироватьРепозиторий(URLРепозитория, Каталог); - ГитРепозиторий.ПерейтиВВетку(Ветка); + Лог.Информация("Извлекаю изменения с удаленного сервера"); + ГитРепозиторий.Извлечь(); + + Лог.Информация("Доступные ветки"); + СписокВеток = ГитРепозиторий.ПолучитьСписокВеток(Истина); + + Для каждого СтрокаТЧ Из СписокВеток Цикл + + Лог.Информация("Ветка <%1>", СтрокаТЧ.Имя); + + КонецЦикла; + + ГитРепозиторий.ПерейтиВВетку(Ветка, , Истина); КонецПроцедуры @@ -56,6 +68,8 @@ КаталогПроектаGitsync = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "bin"); + УстановитьПеременнуюСреды("OSCRIPTBIN", КаталогПроектаGitsync); + ФС.ОбеспечитьКаталог(КаталогПроектаGitsync); Лог.Информация("Установка в каталог проекта <%1>", КаталогПроектаGitsync); @@ -89,7 +103,7 @@ Ветка = "master"; ПутьКМанифестуСборки = "build_packagedef"; - + ПолучитьИсходники(URLРепозитория, Ветка, КаталогСборки); УстановитьПакет(КаталогСборки, ПутьКМанифестуСборки);