mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-01-03 22:52:10 +02:00
Добавлена возможность настройки precommit
This commit is contained in:
parent
58155e742e
commit
2741785217
266
src/Классы/КомандаКонфигуратион.os
Normal file
266
src/Классы/КомандаКонфигуратион.os
Normal file
@ -0,0 +1,266 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с реализацией работы команды <configuration>
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать gitrunner
|
||||
Перем Лог;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Процедура НастроитьКоманду(Знач Команда, Знач Парсер) Экспорт
|
||||
|
||||
// Добавление параметров команды
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-global", "Работа с глобальными настройками.");
|
||||
// TODO: пока оция не используется Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-rep-path", "Каталог репозитория, настройки которого интересуют.");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-reset", "Сброс настроек на значения по умолчанию. Если редактируются настройки репозитория, то происходит удаление файла настроек.");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-config", "Интерактивное конфигурирование настроек.");
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
// Выполняет логику команды
|
||||
//
|
||||
// Параметры:
|
||||
// ПараметрыКоманды - Соответствие - Соответствие ключей командной строки и их значений
|
||||
// Приложение - Модуль - Модуль менеджера приложения
|
||||
//
|
||||
Функция ВыполнитьКоманду(Знач ПараметрыКоманды, Знач Приложение) Экспорт
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
Если НЕ ПараметрыКоманды["-global"] Тогда
|
||||
// TODO: Пока не используется И НЕ ЗначениеЗаполнено(ПараметрыКоманды["-rep-path"]) Тогда
|
||||
|
||||
// TODO: пока не используется Лог.Ошибка("Для конфгурирования необходимо передать флаг -global или указать каталог репозитория параметром -rep-path");
|
||||
Лог.Ошибка("Для конфгурирования необходимо передать флаг -global");
|
||||
Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ПараметрыКоманды["-global"] Тогда
|
||||
|
||||
КаталогРепозитория = Приложение.ПутьКРодительскомуКаталогу();
|
||||
|
||||
Иначе
|
||||
|
||||
КаталогРепозитория = ПараметрыКоманды["-rep-path"];
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УправлениеНастройками = Новый НастройкиРепозитория(КаталогРепозитория);
|
||||
|
||||
Если ПараметрыКоманды["-reset"] Тогда
|
||||
|
||||
Если ПараметрыКоманды["-global"] Тогда
|
||||
|
||||
ЗаписатьГлобальныеНастройкиПоУмолчанию(УправлениеНастройками, Приложение.КаталогСценариев());
|
||||
|
||||
Иначе
|
||||
|
||||
СброситьНастройкиРепозитория(УправлениеНастройками);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИначеЕсли ПараметрыКоманды["-config"] Тогда
|
||||
|
||||
ИнтерактивнаяНастройка(КаталогРепозитория, УправлениеНастройками, ПараметрыКоманды["-global"], Приложение.КаталогСценариев());
|
||||
|
||||
Иначе
|
||||
|
||||
НапечататьНастройки(УправлениеНастройками);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// При успешном выполнении возвращает код успеха
|
||||
Возврат Приложение.РезультатыКоманд().Успех;
|
||||
|
||||
КонецФункции // ВыполнитьКоманду
|
||||
|
||||
Процедура НапечататьНастройки(УправлениеНастройками)
|
||||
|
||||
Если УправлениеНастройками.ЭтоНовый() Тогда
|
||||
|
||||
Лог.Информация("Файл настроек не обнаружен");
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
НастройкиПрекоммита = УправлениеНастройками.НастройкиПриложения("Precommt4onecСценарии");
|
||||
Если НЕ ЗначениеЗаполнено(НастройкиПрекоммита) Тогда
|
||||
|
||||
Лог.Информация("Настройки в файле отсутствуют");
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Сообщить("Установленные настройки: ");
|
||||
|
||||
Для Каждого НастройкаПрекоммита Из НастройкиПрекоммита Цикл
|
||||
|
||||
Если ТипЗнч(НастройкаПрекоммита.Значение) = Тип("Массив") Тогда
|
||||
|
||||
ЗначениеПараметра = СтрСоединить(НастройкаПрекоммита.Значение, ",");
|
||||
|
||||
Иначе
|
||||
|
||||
ЗначениеПараметра = НастройкаПрекоммита.Значение;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Сообщить(Символы.Таб + НастройкаПрекоммита.Ключ + " = " + ЗначениеПараметра);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаписатьГлобальныеНастройкиПоУмолчанию(УправлениеНастройками, ТекущийКаталогСценариев)
|
||||
|
||||
ИмяПриложения = "Precommt4onecСценарии";
|
||||
СброситьНастройкиРепозитория(УправлениеНастройками);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ИспользоватьСценарииРепозитория", Ложь);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\КаталогЛокальныхСценариев", "");
|
||||
|
||||
ГлобальныеСценарии = ПолучитьИменаСценариев(ТекущийКаталогСценариев);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ГлобальныеСценарии", ГлобальныеСценарии);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СброситьНастройкиРепозитория(УправлениеНастройками)
|
||||
|
||||
Если УправлениеНастройками.ЭтоНовый() Тогда
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПриложения = "Precommt4onecСценарии";
|
||||
УправлениеНастройками.УдалитьНастройкиПриложения(ИмяПриложения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьИменаСценариев(КаталогСценариев)
|
||||
|
||||
НайденныеСценарии = Новый Массив;
|
||||
ФайлыСценариев = НайтиФайлы(КаталогСценариев, "*.os");
|
||||
Для Каждого ФайлСценария Из ФайлыСценариев Цикл
|
||||
|
||||
Если СтрСравнить(ФайлСценария.ИмяБезРасширения, "ШаблонСценария") = 0 Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
НайденныеСценарии.Добавить(ФайлСценария.Имя);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат НайденныеСценарии;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ИнтерактивнаяНастройка(КаталогРепозитория, УправлениеНастройками, ГлобальныеНастройки, КаталогГлобальныхСценариев)
|
||||
|
||||
Сообщить("Настройка конфигурации precommit");
|
||||
Если ГлобальныеНастройки Тогда
|
||||
|
||||
ГлобальныеСценарии = ПолучитьНастройкуМассив("Выберите подключаемые глобальные сценарии: ", ПолучитьИменаСценариев(КаталогГлобальныхСценариев));
|
||||
ИспользоватьСценарииРепозитория = ПолучитьНастройкуБулево("Нужно использовать сценарии локальных репозиториев?", ЛОЖЬ);
|
||||
|
||||
КаталогЛокальныхСценариев = "";
|
||||
Если ИспользоватьСценарииРепозитория Тогда
|
||||
|
||||
КаталогЛокальныхСценариев = ПолучитьНастройкуСтрока("Укажите относительный путь к сценариям в репозитории: ");
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПриложения = "Precommt4onecСценарии";
|
||||
СброситьНастройкиРепозитория(УправлениеНастройками);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ИспользоватьСценарииРепозитория", ИспользоватьСценарииРепозитория);
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\КаталогЛокальныхСценариев", КаталогЛокальныхСценариев);
|
||||
|
||||
УправлениеНастройками.ЗаписатьНастройку(ИмяПриложения + "\ГлобальныеСценарии", ГлобальныеСценарии);
|
||||
|
||||
Иначе
|
||||
|
||||
// todo
|
||||
// пока нет, будет в будущем
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПолучитьНастройкуБулево(ТекстПодсказки, ЗначениеПоУмолчанию)
|
||||
|
||||
ВыбранноеЗначение = Формат(ЗначениеПоУмолчанию, "БЛ=n; БИ=y");
|
||||
Пока ИСТИНА Цикл
|
||||
|
||||
Сообщить(ТекстПодсказки + " [" + Формат(ЗначениеПоУмолчанию, "БЛ=n; БИ=y") + "]. Введите y[es]/n[o]");
|
||||
ВвестиСтроку(ВыбранноеЗначение);
|
||||
|
||||
Если СтрНайти("yY", ВыбранноеЗначение) Тогда
|
||||
|
||||
ВыбранноеЗначение = ИСТИНА;
|
||||
Прервать;
|
||||
|
||||
ИначеЕсли СтрНайти("nN", ВыбранноеЗначение) Тогда
|
||||
|
||||
ВыбранноеЗначение = ЛОЖЬ;
|
||||
Прервать;
|
||||
|
||||
ИначеЕсли ВыбранноеЗначение = Символы.ПС Тогда
|
||||
|
||||
ВыбранноеЗначение = ИСТИНА;
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ВыбранноеЗначение;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьНастройкуМассив(ТекстПодсказки, ДоступныйМассив)
|
||||
|
||||
Сообщить(ТекстПодсказки);
|
||||
ВыбранныеЭлементы = Новый Массив;
|
||||
Для Ит = 0 По ДоступныйМассив.Количество() - 1 Цикл
|
||||
|
||||
ЗначениеМассива = ДоступныйМассив[Ит];
|
||||
ТекстПодсказкиМассив = Символы.Таб + ЗначениеМассива;
|
||||
Если ПолучитьНастройкуБулево(ТекстПодсказкиМассив, ИСТИНА) Тогда
|
||||
|
||||
ВыбранныеЭлементы.Добавить(ЗначениеМассива);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ВыбранныеЭлементы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьНастройкуСтрока(ТекстПодсказки)
|
||||
|
||||
ВыбранноеЗначение = "";
|
||||
Пока Истина Цикл
|
||||
|
||||
Сообщить(ТекстПодсказки);
|
||||
ВвестиСтроку(ВыбранноеЗначение);
|
||||
|
||||
ВыбранноеЗначение = СокрЛП(ВыбранноеЗначение);
|
||||
Если Не ПустаяСтрока(ВыбранноеЗначение) Тогда
|
||||
|
||||
Прервать;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ВыбранноеЗначение;
|
||||
|
||||
КонецФункции
|
@ -32,7 +32,7 @@
|
||||
|
||||
Лог = Приложение.ПолучитьЛог();
|
||||
|
||||
ЗагрузитьСценарииОбработки();
|
||||
ЗагрузитьСценарииОбработки(Приложение.КаталогСценариев());
|
||||
|
||||
КаталогРепозитория = ПараметрыКоманды["КаталогРепозитория"];
|
||||
ФайлКаталогРепозитория = Новый Файл(КаталогРепозитория);
|
||||
@ -167,10 +167,10 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗагрузитьСценарииОбработки()
|
||||
Процедура ЗагрузитьСценарииОбработки(ТекущийКаталогСценариев)
|
||||
|
||||
СценарииОбработки = Новый Массив;
|
||||
ФайлыСценариев = НайтиФайлы(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "СценарииОбработки"), "*.os");
|
||||
ФайлыСценариев = НайтиФайлы(ТекущийКаталогСценариев, "*.os");
|
||||
Для Каждого ФайлСценария Из ФайлыСценариев Цикл
|
||||
|
||||
Если СтрСравнить(ФайлСценария.ИмяБезРасширения, "ШаблонСценария") = 0 Тогда
|
||||
|
269
src/Классы/НастройкиРепозитория.os
Normal file
269
src/Классы/НастройкиРепозитория.os
Normal file
@ -0,0 +1,269 @@
|
||||
///////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Работает с настройками в конфигурационном файле репозитория 1С
|
||||
// в Git
|
||||
//
|
||||
// (с) BIA Technologies, LLC
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать json
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Перем ИнициализацияВыпонена; // содержит признак инициализации репозитория
|
||||
Перем НовыйКонфиг; // содержит признак нового конфига
|
||||
Перем Конфигурация; // описание конфигурации
|
||||
Перем АдресКонфигурационногоФайла; // адрес нахождения конфигурационного файла
|
||||
Перем ОбновлятьКонфигурацию; // флаг необходимости обновления конфигурации / затирания
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Программный интерфейс
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
// ЭтоНовый
|
||||
// Возвращает признак нового конфига, т.е. отсутствие файла
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак отсутствия файла
|
||||
//
|
||||
Функция ЭтоНовый() Экспорт
|
||||
|
||||
Возврат НовыйКонфиг;
|
||||
|
||||
КонецФункции // ЭтоНовый()
|
||||
|
||||
// ГлобальныеНастройки
|
||||
// Возврает набор глобальных настроек
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - Набор глобальных настроек при их наличии, если настроек нет то будет возвращено пустое соответствие
|
||||
//
|
||||
Функция ГлобальныеНастройки() Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
|
||||
Возврат НастройкиПриложения("GLOBAL");
|
||||
|
||||
КонецФункции // ГлобальныеНастройки() Экспорт
|
||||
|
||||
// НастройкиПриложения
|
||||
// Возврает набор настроек для приложения
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяПриложения - Строка - Имя приложения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Соответствие - Набор гнастроек при их наличии, если настроек нет то будет возвращено пустое соответствие
|
||||
//
|
||||
Функция НастройкиПриложения(ИмяПриложения) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
Если ПустаяСтрока(ИмяПриложения) Тогда
|
||||
|
||||
ВызватьИсключение "Не указано имя приложения";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИскомыеНастройки = Конфигурация.Получить(ИмяПриложения);
|
||||
Если ИскомыеНастройки = Неопределено Тогда
|
||||
|
||||
ИскомыеНастройки = Новый Соответствие;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ИскомыеНастройки;
|
||||
|
||||
КонецФункции // НастройкиПриложения()
|
||||
|
||||
// Настройка
|
||||
// Возвращает значение искомой настройки
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяНастройки - Строка - Имя искомой настройки. Возможные форматы
|
||||
// - "МояНастройка" - для чтения глобальной настройки
|
||||
// - "МоеПриложение\МояНастройка" - для чтения настройки приложения
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Произвольный - Значение настройки
|
||||
//
|
||||
Функция Настройка(ИмяНастройки)Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
|
||||
РазложенноеИмяНастройки = РазобратьИмяНастройки(ИмяНастройки);
|
||||
ИскомоеПриложение = НастройкиПриложения(РазложенноеИмяНастройки.ИмяПриложения);
|
||||
Возврат ИскомоеПриложение.Получить(РазложенноеИмяНастройки.ИмяНастройки);
|
||||
|
||||
КонецФункции // Настройка(ИмяНастройки)
|
||||
|
||||
// ЗаписатьНастройку
|
||||
// Записывает настройку в конфигурационный файл
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяНастройки - Строка - Имя искомой настройки. Возможные форматы
|
||||
// - "МояНастройка" - для чтения глобальной настройки
|
||||
// - "МоеПриложение\МояНастройка" - для чтения настройки приложения
|
||||
//
|
||||
// Значение - Произвольный - Значение настройки, сериализуемое в JSON
|
||||
//
|
||||
Процедура ЗаписатьНастройку(ИмяНастройки, Значение) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
|
||||
РазложенноеИмяНастройки = РазобратьИмяНастройки(ИмяНастройки);
|
||||
ИскомоеПриложение = НастройкиПриложения(РазложенноеИмяНастройки.ИмяПриложения);
|
||||
Если ОбновлятьКонфигурацию ИЛИ ИскомоеПриложение.Получить(РазложенноеИмяНастройки.ИмяНастройки) = Неопределено Тогда
|
||||
|
||||
ИскомоеПриложение.Вставить(РазложенноеИмяНастройки.ИмяНастройки, Значение);
|
||||
|
||||
КонецЕсли;
|
||||
Конфигурация.Вставить(РазложенноеИмяНастройки.ИмяПриложения, ИскомоеПриложение);
|
||||
|
||||
ОбновитьКонфигурационныйФайл();
|
||||
|
||||
КонецПроцедуры // ЗаписатьНастройку(ИмяНастройки, Значение)
|
||||
|
||||
// ЗаписатьНастройкиПриложения
|
||||
// Записывает набор настроек приложения
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяПриложения - Строка - Имя приложения
|
||||
// Значение - Соответствие - Набор настроек приложения
|
||||
//
|
||||
Процедура ЗаписатьНастройкиПриложения(ИмяПриложения, Значение) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
|
||||
Если ПустаяСтрока(ИмяПриложения) Тогда
|
||||
|
||||
ВызватьИсключение "Не указано имя приложения";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ТипЗнч(Значение) <> Тип("Соответствие") Тогда
|
||||
|
||||
ВызватьИсключение "Тип значения должен быть Соответствие";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Конфигурация.Вставить(ИмяПриложения, Значение);
|
||||
|
||||
ОбновитьКонфигурационныйФайл();
|
||||
|
||||
КонецПроцедуры // ЗаписатьНастройкиПриложения()
|
||||
|
||||
// УдалитьНастройкиПриложения
|
||||
// Удаляет набор набор настроек приложения
|
||||
//
|
||||
// Параметры:
|
||||
// ИмяПриложения - Строка - Имя приложения
|
||||
//
|
||||
Процедура УдалитьНастройкиПриложения(ИмяПриложения) Экспорт
|
||||
|
||||
ПроверкаИницализации();
|
||||
|
||||
Если ПустаяСтрока(ИмяПриложения) Тогда
|
||||
|
||||
ВызватьИсключение "Не указано имя приложения";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Конфигурация.Удалить(ИмяПриложения);
|
||||
|
||||
ОбновитьКонфигурационныйФайл();
|
||||
|
||||
КонецПроцедуры // УдалитьНастройкиПриложения()
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// Служебный функционал
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
Функция ПроверкаИницализации()
|
||||
|
||||
Если Не ИнициализацияВыпонена Тогда
|
||||
|
||||
ВызватьИсключение "Необходимо выполнить инициализацию"
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции // ПроверкаИницализации()
|
||||
|
||||
Функция РазобратьИмяНастройки(Знач ИмяНастройки)
|
||||
|
||||
Если ПустаяСтрока(ИмяНастройки) Тогда
|
||||
|
||||
ВызватьИсключение "Не передано имя настройки"
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИмяПриложения = "GLOBAL";
|
||||
ПозицияРазделителя = СтрНайти(ИмяНастройки, "\");
|
||||
Если ПозицияРазделителя > 0 Тогда
|
||||
|
||||
ИмяПриложения = Лев(ИмяНастройки, ПозицияРазделителя - 1);
|
||||
ИмяНастройки = Сред(ИмяНастройки, ПозицияРазделителя + 1);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Новый Структура("ИмяПриложения, ИмяНастройки", ИмяПриложения, ИмяНастройки);
|
||||
|
||||
КонецФункции // РазобратьИмяНастройки()
|
||||
|
||||
Функция ОбновитьКонфигурационныйФайл()
|
||||
|
||||
ПарсерJSON = Новый ПарсерJSON;
|
||||
ТекстКонфигурации = ПарсерJSON.ЗаписатьJSON(Конфигурация);
|
||||
Запись = Новый ЗаписьТекста(АдресКонфигурационногоФайла);
|
||||
Запись.Записать(ТекстКонфигурации);
|
||||
Запись.Закрыть();
|
||||
|
||||
НовыйКонфиг = ЛОЖЬ;
|
||||
|
||||
КонецФункции // ОбновитьКонфигурационныйФайл()
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
// ПриСозданииОбъекта
|
||||
// Инициализирует объект при создании
|
||||
//
|
||||
// Параметры:
|
||||
// КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// ОбновлятьКонф - Булево - флаг необходимости обновления конфигурации / затирания
|
||||
//
|
||||
Процедура ПриСозданииОбъекта(КаталогРепозитория, ОбновлятьКонф = ЛОЖЬ)
|
||||
|
||||
ИнициализацияВыпонена = ЛОЖЬ;
|
||||
НовыйКонфиг = ЛОЖЬ;
|
||||
Конфигурация = Неопределено;
|
||||
АдресКонфигурационногоФайла = "";
|
||||
ОбновлятьКонфигурацию = ?(ОбновлятьКонф = Неопределено, ЛОЖЬ, ОбновлятьКонф);
|
||||
|
||||
Файл = Новый Файл(КаталогРепозитория);
|
||||
Если НЕ (Файл.Существует() И Файл.ЭтоКаталог()) Тогда
|
||||
|
||||
ВызватьИсключение "Каталог репозитория '" + КаталогРепозитория + "' не обнаружен либо это файл"
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
АдресКонфигурационногоФайла = ОбъединитьПути(КаталогРепозитория, "v8config.json");
|
||||
Файл = Новый Файл(АдресКонфигурационногоФайла);
|
||||
Если Файл.Существует() Тогда
|
||||
|
||||
Чтение = Новый ЧтениеТекста(АдресКонфигурационногоФайла);
|
||||
ТекстКонфигурации = Чтение.Прочитать();
|
||||
Чтение.Закрыть();
|
||||
|
||||
ПарсерJSON = Новый ПарсерJSON;
|
||||
Конфигурация = ПарсерJSON.ПрочитатьJSON(ТекстКонфигурации);
|
||||
|
||||
Иначе
|
||||
|
||||
НовыйКонфиг = ИСТИНА;
|
||||
Конфигурация = Новый Соответствие;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ИнициализацияВыпонена = ИСТИНА;
|
||||
|
||||
КонецПроцедуры // ПриСозданииОбъекта()
|
@ -209,13 +209,27 @@
|
||||
|
||||
КонецФункции // ИмяПродукта
|
||||
|
||||
//Возвращает путь к исполняемому файлу
|
||||
// Возвращает путь к исполняемому файлу
|
||||
Функция ПутьКИсполняемомуФайлу() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.ПутьКИсполняемомуФайлу();
|
||||
|
||||
КонецФункции // ПутьКИсполняемомуФайлу
|
||||
|
||||
// Возвращает путь к каталогу основного скрипта
|
||||
Функция ПутьКРодительскомуКаталогу() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.ПутьКРодительскомуКаталогу();
|
||||
|
||||
КонецФункции // ПутьКРодительскомуКаталогу
|
||||
|
||||
// Возвращает путь к каталогу сценариев
|
||||
Функция КаталогСценариев() Экспорт
|
||||
|
||||
Возврат ОбъектНастроек.КаталогСценариев();
|
||||
|
||||
КонецФункции // КаталогСценариев
|
||||
|
||||
// Выводит справку по всем командам приложения
|
||||
Процедура ВывестиСправкуПоКомандам() Экспорт
|
||||
|
||||
|
@ -46,10 +46,35 @@
|
||||
//
|
||||
Функция ПутьКИсполняемомуФайлу() Экспорт
|
||||
|
||||
Возврат ОбъединитьПути(ТекущийСценарий().Каталог, "..", "main.os");
|
||||
Возврат ОбъединитьПути(ПутьКРодительскомуКаталогу(), "src", "main.os");
|
||||
|
||||
КонецФункции // ПутьКИсполняемомуФайлу
|
||||
|
||||
// ПутьКРодительскомуКаталогу
|
||||
// Возвращает путь к каталогу основного скрипта
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Путь к каталогу основного скрипта
|
||||
//
|
||||
Функция ПутьКРодительскомуКаталогу() Экспорт
|
||||
|
||||
Файл = Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог, "..", ".."));
|
||||
Возврат Файл.ПолноеИмя;
|
||||
|
||||
КонецФункции // ПутьКРодительскомуКаталогу
|
||||
|
||||
// КаталогСценариев
|
||||
// Возвращает путь к каталогу сценариев
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Путь к каталогу сценариев
|
||||
//
|
||||
Функция КаталогСценариев() Экспорт
|
||||
|
||||
Возврат ОбъединитьПути(ПутьКРодительскомуКаталогу(), "src", "СценарииОбработки");
|
||||
|
||||
КонецФункции // КаталогСценариев
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// ЛОГИРОВАНИЕ
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
@ -125,5 +150,6 @@
|
||||
Приложение.ДобавитьКоманду(ИмяКомандыВерсия(), "КомандаVersion", "Выводит версию приложения");
|
||||
Приложение.ДобавитьКоманду("precommit", "КомандаПрекоммит", "Выполняет сценарии precommit");
|
||||
Приложение.ДобавитьКоманду("install", "КомандаИнсталл", "Выполняет подключение (установку) precommit hook'а в репозиторий");
|
||||
Приложение.ДобавитьКоманду("configure", "КомандаКонфигуратион", "Выполняет настройку репозитория");
|
||||
|
||||
КонецПроцедуры // ПриРегистрацииКомандПриложения
|
||||
|
10
v8config.json
Normal file
10
v8config.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"Precommt4onecСценарии": {
|
||||
"ИспользоватьСценарииРепозитория": true,
|
||||
"КаталогЛокальныхСценариев": "src\\d",
|
||||
"ГлобальныеСценарии": [
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
"РазборОтчетовОбработокРасширений.os"
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user