mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2025-01-03 22:52:10 +02:00
#ONECICD-312
Интерактивная настройка: * Тесты * Исправлены выявленные ошибки
This commit is contained in:
parent
f37213aef0
commit
6b2e4451ce
@ -21,6 +21,7 @@
|
||||
ВсеШаги.Добавить("УФайлаЕстьМетка");
|
||||
ВсеШаги.Добавить("СодержимоеФайлаИФайлаРазное");
|
||||
ВсеШаги.Добавить("ЯСоздаюНовыйРепозиторийБезИнициализацииВКаталогеИЗапоминаюЕгоКак");
|
||||
ВсеШаги.Добавить("ЯСоздаюФайлВКодировкеСТекстом");
|
||||
|
||||
Возврат ВсеШаги;
|
||||
КонецФункции
|
||||
@ -146,6 +147,15 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
||||
//Я создаю файл "СпециальныйКаталог/ФайлСТекстом.txt" в кодировке "cp866" с текстом "текст178"
|
||||
Процедура ЯСоздаюФайлВКодировкеСТекстом(Знач ПутьФайла, Знач Кодировка, Знач ТекстФайла) Экспорт
|
||||
ПутьФайла = БДД.ПолучитьПутьФайлаСУчетомПеременныхКонтекста(ПутьФайла);
|
||||
ЗаписьТекста = Новый ЗаписьТекста(ПутьФайла, Кодировка);
|
||||
ЗаписьТекста.ЗаписатьСтроку(ТекстФайла);
|
||||
ЗаписьТекста.Закрыть();
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ИнициализироватьРепозиторий(РепозиторийGit, ИмяРепозитория, АлиасКаталога)
|
||||
|
||||
КаталогРепозиториев = БДД.ПолучитьИзКонтекста(АлиасКаталога);
|
||||
|
85
features/ИнтерактивнаяНастройка.feature
Normal file
85
features/ИнтерактивнаяНастройка.feature
Normal file
@ -0,0 +1,85 @@
|
||||
# language: ru
|
||||
|
||||
Функциональность: Настройка конфигурации прекоммита
|
||||
|
||||
Как разработчик
|
||||
Я хочу иметь возможность изменять настройки precommit4onec
|
||||
Чтобы автоматически выполнять обработку исходников перед фиксацией изменений в репозитории
|
||||
|
||||
Контекст:
|
||||
Допустим Я очищаю параметры команды "oscript" в контексте
|
||||
И я очищаю параметры команды "git" в контексте
|
||||
И Я устанавливаю кодировку вывода "utf-8" команды "git"
|
||||
И я включаю отладку лога с именем "oscript.app.precommit4onec"
|
||||
И я создаю временный каталог и запоминаю его как "КаталогРепозиториев"
|
||||
И я переключаюсь во временный каталог "КаталогРепозиториев"
|
||||
И я создаю новый репозиторий без инициализации "rep1" в каталоге "КаталогРепозиториев" и запоминаю его как "РабочийКаталог"
|
||||
# И я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
И я установил рабочий каталог как текущий каталог
|
||||
|
||||
Сценарий: Настройки глобальных сценариев
|
||||
Когда Я создаю файл "answers.txt" в кодировке "cp866" с текстом
|
||||
"""
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
y
|
||||
local
|
||||
n
|
||||
"""
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -rep-path .\ -config < answers.txt"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Файл "v8config.json" содержит
|
||||
"""
|
||||
"ИспользоватьСценарииРепозитория": true,
|
||||
"КаталогЛокальныхСценариев": "local",
|
||||
"ГлобальныеСценарии": [
|
||||
"ДобавлениеПробеловПередКлючевымиСловами.os",
|
||||
"ЗапретИспользованияПерейти.os",
|
||||
"ИсправлениеНеКаноническогоНаписания.os",
|
||||
"КорректировкаXMLФорм.os",
|
||||
"ОтключениеПолнотекстовогоПоиска.os",
|
||||
"ПроверкаДублейПроцедурИФункций.os",
|
||||
"ПроверкаКорректностиОбластей.os",
|
||||
"РазборОбычныхФормНаИсходники.os",
|
||||
"РазборОтчетовОбработокРасширений.os",
|
||||
"СинхронизацияОбъектовМетаданныхИФайлов.os",
|
||||
"СортировкаДереваМетаданных.os",
|
||||
"УдалениеДублейМетаданных.os",
|
||||
"УдалениеЛишнихКонцевыхПробелов.os",
|
||||
"УдалениеЛишнихПустыхСтрок.os"
|
||||
],
|
||||
"""
|
||||
|
||||
Сценарий: Настройки подпроекта
|
||||
Когда Я создаю файл "answers.txt" в кодировке "cp866" с текстом
|
||||
"""
|
||||
n
|
||||
n
|
||||
n
|
||||
y
|
||||
tests
|
||||
n
|
||||
n
|
||||
n
|
||||
n
|
||||
"""
|
||||
И Я создаю каталог "tests" в рабочем каталоге
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -rep-path .\ -config < answers.txt"
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Файл "v8config.json" содержит "tests\\"
|
||||
|
@ -69,6 +69,9 @@
|
||||
|
||||
ИначеЕсли ПараметрыКоманды["-config"] Тогда
|
||||
|
||||
НастройкиПроектов = Новый Соответствие();
|
||||
БазовыеНастройки = Неопределено;
|
||||
|
||||
Если ЗначениеЗаполнено(ПараметрыКоманды["-child-path"]) Тогда
|
||||
|
||||
УказанныйПуть = ПараметрыКоманды["-child-path"];
|
||||
@ -76,21 +79,20 @@
|
||||
Если ПроверитьАдресДополнительногоКаталога(КаталогРепозитория, УказанныйПуть, УправлениеНастройками) Тогда
|
||||
|
||||
УказанныйПуть = ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогРепозитория, УказанныйПуть);
|
||||
НовыеНастройки = ИнтерактивнаяНастройка(УказанныйПуть, УправлениеНастройками, Ложь, Приложение.КаталогСценариев(), Истина);
|
||||
УправлениеНастройками.ОбновитьКонфигурацию();
|
||||
УправлениеНастройками.ЗаписатьНастройкиПриложения(УказанныйПуть, НовыеНастройки.Получить(УказанныйПуть));
|
||||
НовыеНастройки = ИнтерактивнаяНастройка(УказанныйПуть, Ложь, Приложение.КаталогСценариев());
|
||||
НастройкиПроектов.Вставить(УказанныйПуть, НовыеНастройки);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
НовыеНастройки = ИнтерактивнаяНастройка(КаталогРепозитория, УправлениеНастройками, РаботаСГлобальнымиНастройками, Приложение.КаталогСценариев());
|
||||
СконфигурироватьДополнительныеКаталоги(УправлениеНастройками, НовыеНастройки, Приложение.КаталогСценариев(), КаталогРепозитория);
|
||||
РедакторНастроек.СброситьНастройкиРепозитория();
|
||||
РедакторНастроек.ЗаписатьНастройкиРепозитория(НовыеНастройки);
|
||||
БазовыеНастройки = ИнтерактивнаяНастройка(КаталогРепозитория, РаботаСГлобальнымиНастройками, Приложение.КаталогСценариев());
|
||||
СконфигурироватьДополнительныеКаталоги(УправлениеНастройками, НастройкиПроектов, Приложение.КаталогСценариев(), КаталогРепозитория);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
РедакторНастроек.ОбновитьНастройки(БазовыеНастройки, НастройкиПроектов);
|
||||
|
||||
Иначе
|
||||
|
||||
НапечататьНастройки(УправлениеНастройками);
|
||||
@ -193,9 +195,11 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ИнтерактивнаяНастройка(КаталогРепозитория, УправлениеНастройками, ГлобальныеНастройки, КаталогГлобальныхСценариев, ЭтоДопПроект = Ложь)
|
||||
Функция ИнтерактивнаяНастройка(КаталогРепозитория, ГлобальныеНастройки, КаталогГлобальныхСценариев)
|
||||
|
||||
ИмяПриложения = УправлениеНастройками.ИмяПоУмолчанию();
|
||||
УправлениеНастройками = МенеджерНастроек.Настройки();
|
||||
|
||||
ИмяПриложения = МенеджерНастроек.КлючНастройкиPrecommit();
|
||||
ПолныеНастройки = Новый Соответствие;
|
||||
Сообщить(СтрШаблон("Настройка конфигурации precommit %1%2", Символы.ПС, КаталогРепозитория));
|
||||
|
||||
@ -255,7 +259,7 @@
|
||||
|
||||
Лог.Отладка("Итоговый список исполняемых сценариев: %1%2", Символы.ПС, СтрСоединить(ИсполняемыеСценарии, Символы.ПС));
|
||||
|
||||
НастройкиСценариев = СценарииОбработки.СформироватьНастройкиСценариев(ИсполняемыеСценарии, КаталогГлобальныхСценариев);
|
||||
НастройкиСценариев = СценарииОбработки.НастройкиСценариев(ИсполняемыеСценарии, КаталогГлобальныхСценариев);
|
||||
|
||||
НастройкиПриложения.Вставить("ИспользоватьСценарииРепозитория", ИспользоватьСценарииРепозитория);
|
||||
НастройкиПриложения.Вставить("КаталогЛокальныхСценариев", КаталогЛокальныхСценариев);
|
||||
@ -277,28 +281,22 @@
|
||||
|
||||
НастройкиПриложения.Вставить("НастройкиСценариев", НастройкиСценариев);
|
||||
|
||||
Если ЭтоДопПроект Тогда
|
||||
НастройкиКаталога = Новый Соответствие;
|
||||
ПолныеНастройки.Вставить(КаталогРепозитория, НастройкиПриложения);
|
||||
КонецЕсли;
|
||||
|
||||
ПолныеНастройки.Вставить(ИмяПриложения, НастройкиПриложения);
|
||||
|
||||
Возврат ПолныеНастройки;
|
||||
Возврат НастройкиПриложения;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура СконфигурироватьДополнительныеКаталоги(УправлениеНастройками, ОсновныеНастройки, КаталогГлобальныхСценариев, КаталогРепозитория)
|
||||
|
||||
Процедура СконфигурироватьДополнительныеКаталоги(УправлениеНастройками, НастройкиПроектов, КаталогГлобальныхСценариев, КаталогРепозитория)
|
||||
|
||||
Пока ИнтерактивныйРедактор.ПолучитьНастройкуБулево("Сконфигурировать дополнительный каталог со своими правилами обработки?", Ложь) Цикл
|
||||
|
||||
АдресКаталога = ИнтерактивныйРедактор.ПолучитьНастройкуСтрока("Введите относительный путь в репозитории к каталогу", "");
|
||||
|
||||
Если ПроверитьАдресДополнительногоКаталога(КаталогРепозитория, АдресКаталога, УправлениеНастройками) Тогда
|
||||
|
||||
АдресКаталога = ФайловыеОперации.ПолучитьНормализованныйОтносительныйПуть(КаталогРепозитория, АдресКаталога);
|
||||
НастройкиДополнительные = ИнтерактивнаяНастройка(АдресКаталога, УправлениеНастройками, Ложь, КаталогГлобальныхСценариев, Истина);
|
||||
ОсновныеНастройки.Вставить(АдресКаталога, НастройкиДополнительные.Получить(АдресКаталога));
|
||||
АдресКаталога = МенеджерНастроек.НормализованноеИмяПроекта(АдресКаталога);
|
||||
НастройкиПроекта = ИнтерактивнаяНастройка(АдресКаталога, Ложь, КаталогГлобальныхСценариев);
|
||||
|
||||
НастройкиПроектов.Вставить(АдресКаталога, НастройкиПроекта);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -221,21 +221,9 @@
|
||||
Запись.Закрыть();
|
||||
|
||||
НовыйКонфиг = Ложь;
|
||||
|
||||
|
||||
КонецПроцедуры // ОбновитьКонфигурационныйФайл()
|
||||
|
||||
Функция ИмяПоУмолчанию() Экспорт
|
||||
|
||||
Возврат "Precommt4onecСценарии";
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИмяБазовойНастройки() Экспорт
|
||||
|
||||
Возврат "General";
|
||||
|
||||
КонецФункции
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
// ПриСозданииОбъекта
|
||||
@ -289,18 +277,6 @@
|
||||
|
||||
КонецПроцедуры // ПриСозданииОбъекта()
|
||||
|
||||
Процедура ЗаписатьСтруктуруНастроек(Настройки) Экспорт
|
||||
|
||||
ШаблонНастройки = "%1\%2";
|
||||
|
||||
Для Каждого Настройка Из Настройки Цикл
|
||||
|
||||
ЗаписатьНастройку(СтрШаблон(ШаблонНастройки, ИмяПоУмолчанию(), Настройка.Ключ), Настройка.Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбновитьКонфигурацию() Экспорт
|
||||
ОбновлятьКонфигурацию = Истина;
|
||||
КонецПроцедуры
|
@ -225,6 +225,25 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура УдалитьПроекты() Экспорт
|
||||
|
||||
ЗначениеНастройки("").Удалить(КлючПроекты()); // Удаляем ветку "Проекты" из корня настроек прекоммит
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьПроект(Подпроект) Экспорт
|
||||
|
||||
ИмяПроекта = ИмяПроектаДляФайла(Подпроект);
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ИмяПроекта) ИЛИ СтрДлина(ИмяПроекта) <> СтрДлина(Подпроект) Тогда
|
||||
МенеджерПриложения.ПолучитьЛог().Предупреждение("Не найден проект %1", Подпроект);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЗначениеНастройки(КлючПроекты()).Удалить(ИмяПроекта);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Функция ЭтоНовый() Экспорт
|
||||
@ -251,25 +270,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьПроекты() Экспорт
|
||||
|
||||
ЗначениеНастройки("").Удалить(КлючПроекты()); // Удаляем ветку "Проекты" из корня настроек прекоммит
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УдалитьПроект(Подпроект) Экспорт
|
||||
|
||||
ИмяПроекта = ИмяПроектаДляФайла(Подпроект);
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(ИмяПроекта) ИЛИ СтрДлина(ИмяПроекта) <> СтрДлина(Подпроект) Тогда
|
||||
МенеджерПриложения.ПолучитьЛог().Предупреждение("Не найден проект %1", Подпроект);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЗначениеНастройки(КлючПроекты()).Удалить(ИмяПроекта);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
// СЛУЖЕБНЫЙ ФУНКЦИОНАЛ
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
@ -71,4 +71,47 @@
|
||||
УправлениеНастройками.ЗаписатьНастройкиПриложения(НоваяНастройка.Ключ, НоваяНастройка.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбновитьНастройки(БазовыеНастройки, НастройкиПроектов) Экспорт
|
||||
|
||||
Лог = МенеджерПриложения.ПолучитьЛог();
|
||||
|
||||
Лог.Отладка("Обновление настроек");
|
||||
КлючПроекты = МенеджерНастроек.КлючПроекты();
|
||||
|
||||
Если БазовыеНастройки = Неопределено Тогда
|
||||
|
||||
БазовыеНастройки = МенеджерНастроек.НастройкиПроекта("");
|
||||
|
||||
Иначе
|
||||
|
||||
БазовыеНастройки.Вставить(КлючПроекты, Новый Соответствие());
|
||||
|
||||
Для Каждого ИмяПроекта Из МенеджерНастроек.ПроектыКонфигурации() Цикл
|
||||
|
||||
БазовыеНастройки[КлючПроекты].Вставить(ИмяПроекта, МенеджерНастроек.НастройкиПроекта(ИмяПроекта));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(НастройкиПроектов) Тогда
|
||||
|
||||
Если БазовыеНастройки[КлючПроекты] = Неопределено Тогда
|
||||
|
||||
БазовыеНастройки.Вставить(КлючПроекты, Новый Соответствие());
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Элемент Из НастройкиПроектов Цикл
|
||||
|
||||
БазовыеНастройки[КлючПроекты].Вставить(Элемент.Ключ, Элемент.Значение);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
МенеджерНастроек.Настройки().ЗаписатьНастройкиПриложения(МенеджерНастроек.КлючНастройкиPrecommit(), БазовыеНастройки);
|
||||
|
||||
КонецПроцедуры
|
Loading…
Reference in New Issue
Block a user