mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-11-24 08:32:25 +02:00
Реализован функционал сценария разбора обычных форм
This commit is contained in:
parent
a0a9266253
commit
6a9b105266
@ -11,7 +11,7 @@
|
||||
.ЗависитОт("1bdd", "1.5.2")
|
||||
.ЗависитОт("gitrunner", "1.4.0")
|
||||
.ЗависитОт("v8runner", "0.4.1")
|
||||
.ЗависитОт("v8unpack", "1.0.1")
|
||||
.ВключитьФайл("src")
|
||||
.ВключитьФайл("features")
|
||||
.ИсполняемыйФайл("src/main.os", ИмяПродукта);
|
||||
|
||||
|
@ -61,19 +61,25 @@
|
||||
ЖурналИзменений = ПолучитьЖурналИзменений();
|
||||
|
||||
Ит = 0;
|
||||
ИзмененныеКаталоги = Новый Массив;
|
||||
ПараметрыОбработки = Новый Структура("Лог, ЖурналИзменений, ИзмененныеКаталоги, КаталогРепозитория", Лог, ЖурналИзменений, ИзмененныеКаталоги, КаталогРепозитория);
|
||||
ПараметрыОбработки = Новый Структура("Лог, ФайлыДляПостОбработки, ИзмененныеКаталоги, КаталогРепозитория", Лог, Новый Массив, Новый Массив, КаталогРепозитория);
|
||||
Пока Ит < ЖурналИзменений.Количество() Цикл
|
||||
|
||||
АнализируемыйФайл = Новый Файл(ОбъединитьПути(КаталогРепозитория, ЖурналИзменений[Ит].ИмяФайла));
|
||||
Лог.Отладка("Анализируется файл <%1>", АнализируемыйФайл.Имя);
|
||||
ПараметрыОбработки.Вставить("ЖурналИзменений", ЖурналИзменений);
|
||||
|
||||
|
||||
Для Каждого СценарийОбработки Из СценарииОбработки Цикл
|
||||
|
||||
ФайлОбработан = СценарийОбработки.Сценарий.ОбработатьФайл(АнализируемыйФайл, ТекущийКаталогИсходныхФайлов, ПараметрыОбработки);
|
||||
Если ФайлОбработан Тогда
|
||||
|
||||
Для каждого ФайлДляДопОбработки Из ПараметрыОбработки.ФайлыДляПостОбработки Цикл
|
||||
|
||||
ЖурналИзменений.Добавить(Новый Структура("ИмяФайла, ТипИзменения", СтрЗаменить(ФайлДляДопОбработки, КаталогИсходныхФайлов, ""), ВариантИзмененийФайловGit.Изменен));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ПараметрыОбработки.ФайлыДляПостОбработки.Очистить();
|
||||
|
||||
Продолжить;
|
||||
|
||||
КонецЕсли;
|
||||
@ -109,7 +115,7 @@
|
||||
ЖурналИзменений = Новый Массив;
|
||||
Для Каждого СтрокаВывода Из СтрокиВывода Цикл
|
||||
|
||||
Лог.Информация(" <%1>", СтрокаВывода);
|
||||
Лог.Отладка(" <%1>", СтрокаВывода);
|
||||
СтрокаВывода = СокрЛП(СтрокаВывода);
|
||||
ПозицияПробела = СтрНайти(СтрокаВывода, " ");
|
||||
СимволИзменения = Лев(СтрокаВывода, 1);
|
||||
|
141
src/СценарииОбработки/РазборОбычныхФормНаИсходники.os
Normal file
141
src/СценарииОбработки/РазборОбычныхФормНаИсходники.os
Normal file
@ -0,0 +1,141 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Служебный модуль с реализацией сценариев обработки файлов
|
||||
// "РазборОбычныхФормНаИсходники"
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#Использовать v8unpack
|
||||
|
||||
// ИмяСценария
|
||||
// Возвращает имя сценария обработки файлов
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Имя текущего сценария обработки файлов
|
||||
//
|
||||
Функция ИмяСценария() Экспорт
|
||||
|
||||
Возврат "РазборОбычныхФормНаИсходники";
|
||||
|
||||
КонецФункции // ИмяСценария()
|
||||
|
||||
// ОбработатьФайл
|
||||
// Выполняет обработку файла
|
||||
//
|
||||
// Параметры:
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
Если ЭтоФайлОбычнойФормы(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
КаталогаВыгрузки = ПодготовитьКаталогВыгрузки(КаталогИсходныхФайлов, АнализируемыйФайл, ДополнительныеПараметры);
|
||||
Если Не ПустаяСтрока(КаталогаВыгрузки) Тогда
|
||||
|
||||
ЧтениеФайла = Новый ЧтениеФайла8(АнализируемыйФайл.ПолноеИмя);
|
||||
ЧтениеФайла.ExtractAll(КаталогаВыгрузки, Истина);
|
||||
ЧтениеФайла = Неопределено;
|
||||
|
||||
ФайлыМодулей = НайтиФайлы(КаталогаВыгрузки, "module", ИСТИНА);
|
||||
Для Каждого ФайлМодуля Из ФайлыМодулей Цикл
|
||||
|
||||
Файл = Новый Файл(ОбъединитьПути(ФайлМодуля.Путь, "Module") + ".bsl");
|
||||
Если Файл.Существует() Тогда
|
||||
|
||||
УдалитьФайлы(Файл.ПолноеИмя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПереместитьФайл(ФайлМодуля.ПолноеИмя, Файл.ПолноеИмя);
|
||||
ДополнительныеПараметры.ФайлыДляПостОбработки.Добавить(Файл.ПолноеИмя);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ИСТИНА;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
КонецФункции // ОбработатьФайл()
|
||||
|
||||
Функция ЭтоФайлОбычнойФормы(Файл)
|
||||
|
||||
Если ПустаяСтрока(Файл.Расширение) Тогда
|
||||
|
||||
Возврат Ложь;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Имя, "Form.bin") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПодготовитьКаталогВыгрузки(КаталогИсходныхФайлов, ОбрабатываемыйФайл, ДополнительныеПараметры)
|
||||
|
||||
ФайлУдален = НЕ ОбрабатываемыйФайл.Существует();
|
||||
ИмяКаталогаВыгрузки = ОбъединитьПути(ОбрабатываемыйФайл.Путь, ОбрабатываемыйФайл.ИмяБезРасширения);
|
||||
ФайлИмяКаталогаВыгрузки = Новый Файл(ИмяКаталогаВыгрузки);
|
||||
Если НЕ ФайлИмяКаталогаВыгрузки.Существует() Тогда
|
||||
|
||||
Если ФайлУдален Тогда
|
||||
|
||||
ИмяКаталогаВыгрузки = "";
|
||||
|
||||
Иначе
|
||||
|
||||
СоздатьКаталог(ИмяКаталогаВыгрузки);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Иначе
|
||||
|
||||
ФайлыВКаталогеТВФ = НайтиФайлы(ИмяКаталогаВыгрузки, "*", ИСТИНА);
|
||||
Для каждого ФайлВКателогеТВФ Из ФайлыВКаталогеТВФ Цикл
|
||||
|
||||
Если НЕ ФайлВКателогеТВФ.Существует() Тогда
|
||||
|
||||
Продолжить;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
УдалитьФайлы(ФайлВКателогеТВФ.ПолноеИмя);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ФайлУдален Тогда
|
||||
|
||||
УдалитьФайлы(ИмяКаталогаВыгрузки);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ ПустаяСтрока(ИмяКаталогаВыгрузки) Тогда
|
||||
|
||||
ДополнительныеПараметры.ИзмененныеКаталоги.Добавить(ИмяКаталогаВыгрузки);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ФайлУдален Тогда
|
||||
|
||||
Возврат ИмяКаталогаВыгрузки;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат "";
|
||||
|
||||
КонецФункции // ПодготовитьКаталогВыгрузки()
|
@ -30,10 +30,11 @@
|
||||
// АнализиремыйАнализируемыйФайлФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * ЖурналИзменений - Массив - Набор описаний анализируемых файлов
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
@ -43,6 +44,7 @@
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
|
||||
Если ТипФайлаПоддерживается(АнализируемыйФайл) Тогда
|
||||
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
|
||||
КаталогВыгрузки = ПодготовитьКаталогВыгрузки(КаталогИсходныхФайлов, АнализируемыйФайл, ДополнительныеПараметры);
|
||||
@ -62,15 +64,14 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
// // Добавим файлы для дальнейшей обработки
|
||||
// // Понятно, что добавить удаленные не получится
|
||||
// ФайлыВКаталогеТВФ = НайтиФайлы(КаталогВыгрузки, "*", ИСТИНА);
|
||||
// Для каждого ФайлВКателогеТВФ Из ФайлыВКаталогеТВФ Цикл
|
||||
// Добавим файлы для дальнейшей обработки
|
||||
// Понятно, что добавить удаленные не получится
|
||||
ФайлыВКаталогеТВФ = НайтиФайлы(КаталогВыгрузки, "*", ИСТИНА);
|
||||
Для каждого ФайлВКателогеТВФ Из ФайлыВКаталогеТВФ Цикл
|
||||
|
||||
// ДополнительныеПараметры.ЖурналИзменений.Добавить(
|
||||
// Новый Структура("Имя")СтрЗаменить(ФайлВКателогеТВФ.ПолноееИмя, ДополнительныеПараметры.КаталогРепозитория, ""));
|
||||
ДополнительныеПараметры.ФайлыДляПостОбработки.Добавить(ФайлВКателогеТВФ.ПолноеИмя);
|
||||
|
||||
// КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ИСТИНА;
|
||||
|
||||
@ -108,6 +109,7 @@
|
||||
Прервать;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если ИмяКаталогаВыгрузки <> ОбрабатываемыйФайл.ИмяБезРасширения Тогда
|
||||
|
||||
ИмяКаталогаВыгрузки = ОбъединитьПути(ИмяКаталогаВыгрузки, ОбрабатываемыйФайл.ИмяБезРасширения);
|
||||
|
@ -22,17 +22,19 @@
|
||||
// АнализируемыйФайл - Файл - Файл из журнала git для анализа
|
||||
// КаталогИсходныхФайлов - Строка - Каталог расположения исходных файлов относительно каталог репозитория
|
||||
// ДополнительныеПараметры - Структура - Набор дополнительных параметров, которые можно использовать
|
||||
// * ЖурналИзменений - Массив - Набор описаний анализируемых файлов
|
||||
// * Лог - Объект - Текущий лог
|
||||
// * ИзмененныеКаталоги - Массив - Каталоги, которые необходимо добавить в индекс
|
||||
// * КаталогРепозитория - Строка - Адрес каталога репозитория
|
||||
// * ФайлыДляПостОбработки - Массив - Файлы, изменившиеся / образоавшиеся в результате работы сценария
|
||||
// и которые необходимо дообработать
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Булево - Признак выполненной обработки файла
|
||||
//
|
||||
Функция ОбработатьФайл(АнализируемыйФайл, КаталогИсходныхФайлов, ДополнительныеПараметры) Экспорт
|
||||
|
||||
ВызватьИсключение "Обработка файла не реализована"
|
||||
ВызватьИсключение "Обработка файла не реализована";
|
||||
Лог = ДополнительныеПараметры.Лог;
|
||||
Лог.Информация("Обработка файла '%1' по сценарию '%2'", АнализируемыйФайл.ПолноеИмя, ИмяСценария());
|
||||
Возврат ЛОЖЬ;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user