Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added bin/v8unpack/v8unpack.exe
Binary file not shown.
Binary file added bin/v8unpack/zlib1.dll
Binary file not shown.
20 changes: 18 additions & 2 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,20 @@

ФС.ОбеспечитьПустойКаталог(ОбъединитьПути(РабочийКаталог, "oscript_modules"));

//Лог.Информация("Установка локальных зависимостей библиотек");
Сообщить("Запаковка бинарных данных библиотек");
КомандаOpm = Новый Команда;

КомандаOpm.УстановитьКоманду("opm");
КомандаOpm.ДобавитьПараметр("run packdata ");
КомандаOpm.ДобавитьЛогВыводаКоманды("task.build");

КодВозврата = КомандаOpm.Исполнить();

Если КодВозврата <> 0 Тогда
ВызватьИсключение КомандаOpm.ПолучитьВывод();
КонецЕсли;

Сообщить("Установка локальных зависимостей библиотек");
КомандаOpm = Новый Команда;

КомандаOpm.УстановитьКоманду("opm");
Expand All @@ -16,7 +29,7 @@
КодВозврата = КомандаOpm.Исполнить();

Если КодВозврата <> 0 Тогда
ВызватьИсключение КомандаOpm.ПолучитьВывод();
ВызватьИсключение КомандаOpm.ПолучитьВывод();
КонецЕсли;

КонецПроцедуры
Expand All @@ -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")
;
301 changes: 301 additions & 0 deletions src/Классы/dropConfigDump.os
Original file line number Diff line number Diff line change
@@ -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");

ЗакоммититьФайлИгнорируемыхИзменений = Ложь;

КонецПроцедуры

Инициализация();
Loading