Skip to content
Open
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
2 changes: 2 additions & 0 deletions docs/СортировкаСостава.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
- Общих реквизитов
- Планов обмена
- Функциональных опций
- Подписок на события
- Подсистем

Пример настройки:
Expand All @@ -30,6 +31,7 @@
"ОбщийРеквизит",
"ПланОбмена",
"ФункциональнаяОпция",
"ПодпискаНаСобытие",
"Подсистема"
]
}
Expand Down
4 changes: 2 additions & 2 deletions features/Конфигурирование.feature
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "precommit4onec v25.01"
И Вывод команды "oscript" содержит "Установленные настройки:"
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
Expand All @@ -33,7 +33,7 @@
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
И Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "precommit4onec v25.01"
И Вывод команды "oscript" содержит "Установленные настройки: Базовые настройки"
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
И Вывод команды "oscript" содержит "ГлобальныеСценарии = ВставкаКопирайтов.os,ДобавлениеПробеловПередКлючевымиСловами.os,ЗапретИспользованияПерейти.os,ИсправлениеНеКаноническогоНаписания.os,КорректировкаXMLФорм.os,ОбработкаЮнитТестов.os,ОтключениеПолнотекстовогоПоиска.os,ОтключениеРазрешенияИзменятьФорму.os,ПроверкаДублейПроцедурИФункций.os,ПроверкаКорректностиИнструкцийПрепроцессора.os,ПроверкаКорректностиОбластей.os,ПроверкаНецензурныхСлов.os,РазборОбычныхФормНаИсходники.os,РазборОтчетовОбработокРасширений.os,СинхронизацияОбъектовМетаданныхИФайлов.os,СортировкаПравРолей.os,СортировкаСостава.os,УдалениеДублейМетаданных.os,УдалениеЛишнихКонцевыхПробелов.os,УдалениеЛишнихПустыхСтрок.os"
Expand Down
6 changes: 3 additions & 3 deletions features/ПростыеКоманды.feature
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
Сценарий: Получение версии продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
Тогда Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "24.11"
И Вывод команды "oscript" содержит "25.01"
И Вывод команды "oscript" не содержит "precommit4onec v"
И Код возврата команды "oscript" равен 0

Сценарий: Получение помощи продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
Тогда Вывод команды "oscript" содержит
"""
precommit4onec v24.11
precommit4onec v25.01
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
Expand All @@ -37,7 +37,7 @@
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
Тогда Вывод команды "oscript" содержит
"""
precommit4onec v24.11
precommit4onec v25.01
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
Expand Down
8 changes: 4 additions & 4 deletions features/УстановкаПрекоммита.feature
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "precommit4onec v25.01"
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"

Expand All @@ -28,14 +28,14 @@
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "precommit4onec v25.01"
И Вывод команды "oscript" содержит "не является репозиторием git"

Сценарий: Установка precommit4onec во вложенные каталоги
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "precommit4onec v25.01"
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"

Expand All @@ -51,6 +51,6 @@
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v24.11"
И Вывод команды "oscript" содержит "precommit4onec v25.01"
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("tempfiles", "1.1.1")
.РазработкаЗависитОт("fs")
.РазработкаЗависитОт("coverage")
.РазработкаЗависитОт("coverage", "0.6.1")
.ВключитьФайл("src")
.ВключитьФайл("v8config.json")
.ВключитьФайл("LICENSE")
Expand Down
2 changes: 1 addition & 1 deletion src/Модули/ПараметрыПриложения.os
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
//
Функция ВерсияПродукта() Экспорт

Возврат "24.11";
Возврат "25.01";

КонецФункции // ВерсияПродукта

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
Перем ПланОбмена Экспорт;
Перем ФункциональнаяОпция Экспорт;
Перем Подсистема Экспорт;
Перем ПодпискаНаСобытие Экспорт;
Перем Неизвестный Экспорт;

// BSLLS:ExportVariables-on
Expand All @@ -34,6 +35,9 @@
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияФункциональнойОпции(АнализируемыйФайл) Тогда
Описание.Тип = ФункциональнаяОпция;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияФункциональнойОпцииEDT(АнализируемыйФайл);
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПодпискиНаСобытие(АнализируемыйФайл) Тогда
Описание.Тип = ПодпискаНаСобытие;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПодпискиНаСобытиеEDT(АнализируемыйФайл);
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) Тогда
Описание.Тип = Подсистема;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл);
Expand All @@ -54,5 +58,6 @@
ОбщийРеквизит = "ОбщийРеквизит";
ПланОбмена = "ПланОбмена";
ФункциональнаяОпция = "ФункциональнаяОпция";
ПодпискаНаСобытие = "ПодпискаНаСобытие";
Подсистема = "Подсистема";
Неизвестный = "";
12 changes: 12 additions & 0 deletions src/Модули/ТипыФайлов.os
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,18 @@
Возврат ЭтоФайлОписанияМетаданныхEDT(Файл) И ПутьСодержитКаталог(Файл, "functionaloptions");
КонецФункции

Функция ЭтоФайлОписанияПодпискиНаСобытие(Файл) Экспорт
Возврат ЭтоФайлОписанияПодпискиНаСобытиеКонфигуратора(Файл) ИЛИ ЭтоФайлОписанияПодпискиНаСобытиеEDT(Файл);
КонецФункции

Функция ЭтоФайлОписанияПодпискиНаСобытиеКонфигуратора(Файл) Экспорт
Возврат ЭтоФайлОписанияМетаданныхКонфигуратора(Файл) И ПутьСодержитКаталог(Файл, "eventsubscriptions");
КонецФункции

Функция ЭтоФайлОписанияПодпискиНаСобытиеEDT(Файл) Экспорт
Возврат ЭтоФайлОписанияМетаданныхEDT(Файл) И ПутьСодержитКаталог(Файл, "eventsubscriptions");
КонецФункции

Функция ЭтоФайлПравРоли(Файл) Экспорт
Возврат СтрСравнить(Файл.Имя, "Rights.xml") = 0 ИЛИ СтрСравнить(Файл.Имя, "Rights.rights") = 0;
КонецФункции
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
///////////////////////////////////////////////////////////////////////////////
//
// Служебный модуль с реализацией сценариев обработки файлов <ПроверкаНаличияАртефактовGit>
//
///////////////////////////////////////////////////////////////////////////////

Перем Лог;

// ИмяСценария
// Возвращает имя сценария обработки файлов
//
// Возвращаемое значение:
// Строка - Имя текущего сценария обработки файлов
//
Функция ИмяСценария() Экспорт

Возврат "ПроверкаНаличияАртефактовGit";

КонецФункции // ИмяСценария()

// ОбработатьФайл
// Выполняет обработку файла
//
// Параметры:
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
// * Лог - Объект - Текущий лог
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
// * КаталогРепозитория - Строка - Адрес каталога репозитория
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образовавшиеся в результате работы сценария
// и которые необходимо дообработать
//
// Возвращаемое значение:
// Булево - Признак выполненной обработки файла
//
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт

Лог = ДополнительныеПараметры.Лог;
НастройкиСценария = ДополнительныеПараметры.Настройки.Получить(ИмяСценария());
Если АнализируемыйФайл.Существует() И АнализируемыйФайл.ЭтоФайл() Тогда

Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());

ПроверитьНаНаличиеАртефактовGit(АнализируемыйФайл.ПолноеИмя);
Возврат Истина;

КонецЕсли;

Возврат Ложь;

КонецФункции // ОбработатьФайл()

Процедура ПроверитьНаНаличиеАртефактовGit(ПутьКФайлуМодуля)

ПаттерныКонфликтов = Новый Массив();
ПаттерныКонфликтов.Добавить("^<<<<<<<\s");
ПаттерныКонфликтов.Добавить("^=======\s");
ПаттерныКонфликтов.Добавить("^=======\n$");
ПаттерныКонфликтов.Добавить("^=======\r\n$");
ПаттерныКонфликтов.Добавить("^>>>>>>>\s");
Comment on lines +56 to +61

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему массивом, а не одной регуряркой (через |)?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ну и тесты хотелось бы увидеть, в том числе такие, в которых есть подобные строки в строковых литералах

ТекстМодуля = ФайловыеОперации.ПрочитатьТекстФайла(ПутьКФайлуМодуля);

Ошибки = Новый Массив;
Если НЕ ПустаяСтрока(ТекстМодуля) Тогда

Для Каждого Паттерн Из ПаттерныКонфликтов Цикл
ШаблонПоиска = Новый РегулярноеВыражение(Паттерн);
ШаблонПоиска.Многострочный = Ложь;

Совпадения = ШаблонПоиска.НайтиСовпадения(ТекстМодуля);
Если Совпадения.Количество() > 0 Тогда
ТекстОшибки = СтрШаблон("'%1': %2 шт", Паттерн, Совпадения.Количество());
Лог.Отладка(ТекстОшибки);
Ошибки.Добавить(ТекстОшибки);
КонецЕсли;

КонецЦикла;
КонецЕсли;

Если Ошибки.Количество() > 0 Тогда
ТекстОшибки = СтрСоединить(Ошибки, Символы.ПС);
ТекстОшибки = СтрШаблон("В файле '%1' обнаружены ошибки объединения или перемещения веток: %2", ПутьКФайлуМодуля, ТекстОшибки);
Лог.Ошибка(ТекстОшибки);

ВызватьИсключение ТекстОшибки;
КонецЕсли;

КонецПроцедуры
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,8 @@
УстановитьУсловияОбработкиФайлаПланОбмена(НастройкиСортировки);
ИначеЕсли НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.ОбщийРеквизит Тогда
УстановитьУсловияОбработкиФайлаОбщийРеквизит(НастройкиСортировки);
ИначеЕсли НастройкиСортировки.Тип = ТипыОбъектовДляСортировки.ПодпискаНаСобытие Тогда
УстановитьУсловияОбработкиФайлаПодпискаНаСобытие(НастройкиСортировки);
Иначе
ВызватьИсключение "Неизвестный тип для сортировки";
КонецЕсли;
Expand Down Expand Up @@ -186,6 +188,22 @@
КонецЕсли;
КонецПроцедуры

Процедура УстановитьУсловияОбработкиФайлаПодпискаНаСобытие(НастройкиСортировки)
Если НастройкиСортировки.ЕДТ() Тогда
НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("types");
НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" ");
НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава);
Иначе
НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("v8:Type");
НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" ");
НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава);

НастройкаСценарияСортировкиСостава = Новый НастройкаСценарияСортировкиСостава("v8:TypeSet");
НастройкаСценарияСортировкиСостава.УстановитьРазделительЭлементов(" ");
НастройкиСортировки.ДобавитьСценарий(НастройкаСценарияСортировкиСостава);
КонецЕсли;
КонецПроцедуры

Процедура УстановитьУсловияОбработкиФайлаПланОбмена(НастройкиСортировки)
Если НастройкиСортировки.ЕДТ() Тогда
Если НастройкиСортировки.Заимствованный() Тогда
Expand Down
Loading