From 33b72b92ff7803fa97c7082576baca133fc52f2f Mon Sep 17 00:00:00 2001 From: Dmitriy Medvedev Date: Thu, 31 Oct 2019 16:38:52 +0300 Subject: [PATCH] =?UTF-8?q?#ONECICD-147=20=D0=9F=D0=B5=D1=80=D0=B5=D0=B8?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=BD=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/ВыполнениеПрекоммита.feature | 2 +- features/Конфигурирование.feature | 2 +- src/Классы/КомандаПрекоммит.os | 87 ++++++++++--------- src/Классы/НастройкиРепозитория.os | 22 ++--- tests/fixtures/v8config.json | 2 +- .../ХранениеРазныхНастроек/v8config.json | 2 +- v8config.json | 2 +- 7 files changed, 60 insertions(+), 59 deletions(-) diff --git a/features/ВыполнениеПрекоммита.feature b/features/ВыполнениеПрекоммита.feature index 70da7b6..e7a2ab5 100644 --- a/features/ВыполнениеПрекоммита.feature +++ b/features/ВыполнениеПрекоммита.feature @@ -128,7 +128,7 @@ И я создаю файл "РабочийКаталог\v8config.json" с текстом """ { - "Precommt4onecСценарии": { + "Precommit4onecСценарии": { "ИспользоватьСценарииРепозитория": false, "КаталогЛокальныхСценариев": "", "ГлобальныеСценарии": [ diff --git a/features/Конфигурирование.feature b/features/Конфигурирование.feature index b9bc52f..29ed798 100644 --- a/features/Конфигурирование.feature +++ b/features/Конфигурирование.feature @@ -37,7 +37,7 @@ И Вывод команды "oscript" содержит """ precommit4onec v1.20 - Установленные настройки: Precommt4onecСценарии + Установленные настройки: Precommit4onecСценарии ИспользоватьСценарииРепозитория = Нет КаталогЛокальныхСценариев = ГлобальныеСценарии = ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОтключениеПолнотекстовогоПоиска.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиОбластей.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаДереваМетаданных.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os diff --git a/src/Классы/КомандаПрекоммит.os b/src/Классы/КомандаПрекоммит.os index 1f1d954..f3d39b8 100644 --- a/src/Классы/КомандаПрекоммит.os +++ b/src/Классы/КомандаПрекоммит.os @@ -17,7 +17,7 @@ // Добавление параметров команды Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогРепозитория", "Каталог анализируемого репозитория"); - Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir", + Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir", "Каталог расположения исходных файлов относительно корня репозитория. По умолчанию "); КонецПроцедуры // НастроитьКоманду @@ -42,8 +42,8 @@ КонецЕсли; УправлениеНастройками = Новый НастройкиРепозитория(КаталогРепозитория); - Если УправлениеНастройками.ЭтоНовый() - ИЛИ УправлениеНастройками.НастройкиПриложения("Precommt4onecСценарии").Количество() = 0 Тогда + Если УправлениеНастройками.ЭтоНовый() + ИЛИ УправлениеНастройками.НастройкиПриложения("Precommit4onecСценарии").Количество() = 0 Тогда Лог.Информация("Используем глобальные настройки"); УправлениеНастройками = Новый НастройкиРепозитория(Приложение.ПутьКРодительскомуКаталогу()); @@ -81,16 +81,16 @@ Возврат Приложение.РезультатыКоманд().НеверныеПараметры; КонецЕсли; - - НастройкиПроектов = УправлениеНастройками.ПолучитьПроектыКонфигурации(); + + НастройкиПроектов = УправлениеНастройками.ПолучитьПроектыКонфигурации(); НаборНастроек = Новый Соответствие; - Для Каждого ЭлементНастройки из НастройкиПроектов Цикл + Для Каждого ЭлементНастройки з НастройкиПроектов Цикл Настройка = Новый Структура("СценарииОбработки, НастройкиСценариев"); - Настройка.СценарииОбработки = ЗагрузитьСценарииОбработки(Приложение.КаталогСценариев(), - УправлениеНастройками, - КаталогРепозитория, - ЭлементНастройки); + Настройка.СценарииОбработки = ЗагрузитьСценарииОбработки(Приложение.КаталогСценариев(), + УправлениеНастройками, + КаталогРепозитория, + ЭлементНастройки); Настройка.НастройкиСценариев = УправлениеНастройками.НастройкиПриложения(ЭлементНастройки); НаборНастроек.Вставить(ЭлементНастройки, Настройка); КонецЦикла; @@ -98,40 +98,40 @@ ЖурналИзменений = ПолучитьЖурналИзменений(); Ит = 0; - ПараметрыОбработки = Новый Структура("ФайлыДляПостОбработки, ИзмененныеКаталоги, КаталогРепозитория, Настройки", - Новый Массив, Новый Массив, КаталогРепозитория); + ПараметрыОбработки = Новый Структура("ФайлыДляПостОбработки, ИзмененныеКаталоги, КаталогРепозитория, Настройки", + Новый Массив, Новый Массив, КаталогРепозитория); ПараметрыОбработки.Вставить("Лог", Лог); Пока Ит < ЖурналИзменений.Количество() Цикл АнализируемыйФайл = Новый Файл(ОбъединитьПути(КаталогРепозитория, ЖурналИзменений[Ит].ИмяФайла)); Лог.Отладка("Анализируется файл <%1>", АнализируемыйФайл.Имя); - ИмяФайла = ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогРепозитория, - ЖурналИзменений[Ит].ИмяФайла); + ИмяФайла = ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогРепозитория, + ЖурналИзменений[Ит].ИмяФайла); НастройкаОбработки = ПолучитьПараметрыОбработкиФайла(ИмяФайла, УправлениеНастройками, НаборНастроек); - - СценарииОбработки = НастройкаОбработки.СценарииОбработки; + + СценарииОбработки = НастройкаОбработки.СценарииОбработки; НастройкиСценариев = НастройкаОбработки.НастройкиСценариев; ПараметрыОбработки.Настройки = НастройкиСценариев.Получить("НастройкиСценариев"); Для Каждого СценарийОбработки Из СценарииОбработки Цикл - ФайлОбработан = СценарийОбработки.Сценарий.ОбработатьФайл(АнализируемыйФайл, - ТекущийКаталогИсходныхФайлов, - ПараметрыОбработки); + ФайлОбработан = СценарийОбработки.Сценарий.ОбработатьФайл(АнализируемыйФайл, + ТекущийКаталогИсходныхФайлов, + ПараметрыОбработки); Если НЕ ФайлОбработан Тогда Продолжить; КонецЕсли; - + Для Каждого ФайлДляДопОбработки Из ПараметрыОбработки.ФайлыДляПостОбработки Цикл - - ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", - СтрЗаменить(ФайлДляДопОбработки, КаталогРепозитория, ""), - ВариантИзмененийФайловGit.Изменен)); - - КонецЦикла; + ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", + СтрЗаменить(ФайлДляДопОбработки, КаталогРепозитория, ""), + ВариантИзмененийФайловGit.Изменен)); + + КонецЦикла; + ПараметрыОбработки.ФайлыДляПостОбработки.Очистить(); КонецЦикла; @@ -163,10 +163,10 @@ Для Каждого ЭлементНастройки Из НастройкиПроектов Цикл Если ЭлементНастройки.Ключ = ИмяОбщейНастройки Тогда - + Продолжить; - ИначеЕсли СтрНачинаетсяС(ИмяФайла, ЭлементНастройки.Ключ) Тогда + ИначеЕсли СтрНачинаетсяС(ИмяФайла, ЭлементНастройки.Ключ) Тогда НайденнаяНастройка = ЭлементНастройки.Значение; @@ -177,7 +177,7 @@ КонецЦикла; Возврат НайденнаяНастройка; - + КонецФункции Функция ПолучитьЖурналИзменений() @@ -185,20 +185,20 @@ ПараметрыКомандыGit = Новый Массив; ПараметрыКомандыGit.Добавить("diff --name-status --staged --no-renames"); РепозиторийGit.ВыполнитьКоманду(ПараметрыКомандыGit); - РезультатВывода = РепозиторийGit.ПолучитьВыводКоманды(); - СтрокиВывода = СтрРазделить(РезультатВывода, Символы.ПС); - ЖурналИзменений = Новый Массив; + РезультатВывода = РепозиторийGit.ПолучитьВыводКоманды(); + СтрокиВывода = СтрРазделить(РезультатВывода, Символы.ПС); + ЖурналИзменений = Новый Массив; Для Каждого СтрокаВывода Из СтрокиВывода Цикл Лог.Отладка(" <%1>", СтрокаВывода); - СтрокаВывода = СокрЛП(СтрокаВывода); - ПозицияПробела = СтрНайти(СтрокаВывода, Символы.Таб); - СимволИзменения = Лев(СтрокаВывода, 1); + СтрокаВывода = СокрЛП(СтрокаВывода); + ПозицияПробела = СтрНайти(СтрокаВывода, Символы.Таб); + СимволИзменения = Лев(СтрокаВывода, 1); - ТипИзменения = ВариантИзмененийФайловGit.ОпределитьВариантИзменения(СимволИзменения); - ИмяФайла = СокрЛП(СтрЗаменить(Сред(СтрокаВывода, ПозицияПробела + 1), """", "")); + ТипИзменения = ВариантИзмененийФайловGit.ОпределитьВариантИзменения(СимволИзменения); + ИмяФайла = СокрЛП(СтрЗаменить(Сред(СтрокаВывода, ПозицияПробела + 1), """", "")); ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", ИмяФайла, ТипИзменения)); Лог.Отладка(" В журнале git %2 файл <%1>", ИмяФайла, ТипИзменения); @@ -251,9 +251,9 @@ Возврат СценарииОбработки; КонецФункции -Процедура ЗагрузитьСценарииИзКаталога(СценарииОбработки, ФайлыСценариев, - Знач ИменаЗагружаемыхСценариев = Неопределено, - ЗагрузитьВсе = Ложь) +Процедура ЗагрузитьСценарииИзКаталога(СценарииОбработки, ФайлыСценариев, + Знач ИменаЗагружаемыхСценариев = Неопределено, + ЗагрузитьВсе = Ложь) Если ИменаЗагружаемыхСценариев = Неопределено Тогда @@ -261,7 +261,7 @@ КонецЕсли; - Для Каждого ФайлСценария Из ФайлыСценариев Цикл + Для Каждого ФайлСценария Из ФайлыСценариев Цикл Если СтрСравнить(ФайлСценария.ИмяБезРасширения, "ШаблонСценария") = 0 Тогда @@ -278,8 +278,8 @@ Попытка СценарийОбработки = ЗагрузитьСценарий(ФайлСценария.ПолноеИмя); - СценарииОбработки.Добавить(Новый Структура("ИмяСценария, Сценарий", - СценарийОбработки.ИмяСценария(), СценарийОбработки)); + СценарииОбработки.Добавить(Новый Структура("ИмяСценария, Сценарий", + СценарийОбработки.ИмяСценария(), СценарийОбработки)); Исключение @@ -291,3 +291,4 @@ КонецЦикла; КонецПроцедуры + diff --git a/src/Классы/НастройкиРепозитория.os b/src/Классы/НастройкиРепозитория.os index 45d46cf..bb16f40 100644 --- a/src/Классы/НастройкиРепозитория.os +++ b/src/Классы/НастройкиРепозитория.os @@ -11,11 +11,11 @@ /////////////////////////////////////////////////////////////////// -Перем ИнициализацияВыполнена; // содержит признак инициализации репозитория -Перем НовыйКонфиг; // содержит признак нового конфига -Перем Конфигурация; // описание конфигурации -Перем АдресКонфигурационногоФайла; // адрес нахождения конфигурационного файла -Перем ОбновлятьКонфигурацию; // флаг необходимости обновления конфигурации / затирания +Перем ИнициализацияВыполнена; // содержит признак инициализации репозитория +Перем НовыйКонфиг; // содержит признак нового конфига +Перем Конфигурация; // описание конфигурации +Перем АдресКонфигурационногоФайла; // адрес нахождения конфигурационного файла +Перем ОбновлятьКонфигурацию; // флаг необходимости обновления конфигурации / затирания /////////////////////////////////////////////////////////////////// // Программный интерфейс /////////////////////////////////////////////////////////////////// @@ -87,7 +87,7 @@ Для Каждого Элемент из Конфигурация Цикл - Если ТолькоДополнительные И Элемент.Ключ = ИмяПоУмолчанию() Тогда + Если ТолькоДополнительные И Элемент.Ключ = ИмяПоУмолчанию() Тогда Продолжить; КонецЕсли; @@ -116,7 +116,7 @@ ИскомоеПриложение = НастройкиПриложения(РазложенноеИмяНастройки.ИмяПриложения); Если ОбновлятьКонфигурацию ИЛИ ИскомоеПриложение.Получить(РазложенноеИмяНастройки.ИмяНастройки) = Неопределено Тогда - ИскомоеПриложение.Вставить(РазложенноеИмяНастройки.ИмяНастройки, Значение); + ИскомоеПриложение.Вставить(РазложенноеИмяНастройки.ИмяНастройки, Значение); КонецЕсли; Конфигурация.Вставить(РазложенноеИмяНастройки.ИмяПриложения, ИскомоеПриложение); @@ -164,7 +164,7 @@ ПроверкаИнициализации(); - Если ПустаяСтрока(ИмяПриложения) Тогда + Если ПустаяСтрока(ИмяПриложения) Тогда ВызватьИсключение "Не указано имя приложения"; @@ -198,7 +198,7 @@ КонецЕсли; - ПозицияРазделителя = СтрНайти(ИмяНастройки, "\",НаправлениеПоиска.СКонца); + ПозицияРазделителя = СтрНайти(ИмяНастройки, "\", НаправлениеПоиска.СКонца); Если ПозицияРазделителя > 0 Тогда ИмяПриложения = Лев(ИмяНастройки, ПозицияРазделителя - 1); @@ -224,7 +224,7 @@ Функция ИмяПоУмолчанию() Экспорт - Возврат "Precommt4onecСценарии"; + Возврат "Precommit4onecСценарии"; КонецФункции /////////////////////////////////////////////////////////////////// @@ -268,7 +268,7 @@ КонецЕсли; - ИнициализацияВыполнена = Истина; + ИнициализацияВыполнена = Истина; КонецПроцедуры // ПриСозданииОбъекта() diff --git a/tests/fixtures/v8config.json b/tests/fixtures/v8config.json index 7e2e189..2e78c9e 100644 --- a/tests/fixtures/v8config.json +++ b/tests/fixtures/v8config.json @@ -1,5 +1,5 @@ { - "Precommt4onecСценарии": { + "Precommit4onecСценарии": { "ИспользоватьСценарииРепозитория": true, "КаталогЛокальныхСценариев": "localscenario", "ГлобальныеСценарии": [], diff --git a/tests/fixtures/ХранениеРазныхНастроек/v8config.json b/tests/fixtures/ХранениеРазныхНастроек/v8config.json index 3d267ce..2078a00 100644 --- a/tests/fixtures/ХранениеРазныхНастроек/v8config.json +++ b/tests/fixtures/ХранениеРазныхНастроек/v8config.json @@ -79,7 +79,7 @@ "Токен": "6c0a7cc2bf2e8f054562da6fabf3f2bf41e7a308", "Профили": "bsl bia; Sonar way (outdated copy)" }, - "Precommt4onecСценарии": { + "Precommit4onecСценарии": { "ИспользоватьСценарииРепозитория": false, "КаталогЛокальныхСценариев": "", "ГлобальныеСценарии": [ diff --git a/v8config.json b/v8config.json index 8522392..422b8e3 100644 --- a/v8config.json +++ b/v8config.json @@ -1,5 +1,5 @@ { - "Precommt4onecСценарии": { + "Precommit4onecСценарии": { "ИспользоватьСценарииРепозитория": false, "КаталогЛокальныхСценариев": "", "ГлобальныеСценарии": [