Skip to content

Commit a32a9c9

Browse files
committed
Merge branch 'feature/issue-48' into develop
2 parents 2ee5862 + 8eea2d3 commit a32a9c9

File tree

2 files changed

+89
-10
lines changed

2 files changed

+89
-10
lines changed

tests/v8files-extractor-test.os

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
ВсеТесты.Добавить("Тест_ДолженСоздатьРепозитарийГит");
2424
ВсеТесты.Добавить("Тест_ДолженПроверитьНастройкиРепозитарияГит");
2525
ВсеТесты.Добавить("Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогами");
26+
ВсеТесты.Добавить("Тест_ДолженСобратьФайлОбработкиИзЗаданнойПапки");
2627

2728
Возврат ВсеТесты;
2829

@@ -57,6 +58,19 @@
5758

5859
КонецФункции
5960

61+
Функция ПолучитьКаталогТестовойОбработки()
62+
63+
ИмяКаталогаИсходников = "Fixture";
64+
КаталогИсходниковТеста = ОбъединитьПути(КаталогПроекта(), "src", "tests");
65+
ПутьФайла = ОбъединитьПути(КаталогИсходниковТеста, ИмяКаталогаИсходников);
66+
67+
КаталогИсходников = Новый Файл(ПутьФайла);
68+
Ожидаем.Что(КаталогИсходников.Существует(), "Каталог с исходными кодами обработки должен существовать").ЭтоИстина();
69+
70+
Возврат КаталогИсходников;
71+
72+
КонецФункции
73+
6074
//}
6175

6276
//{ тесты
@@ -192,6 +206,22 @@
192206
Исполнитель.ПроверитьНастройкиРепозитарияГит();
193207
КонецПроцедуры
194208

209+
Процедура Тест_ДолженСобратьФайлОбработкиИзЗаданнойПапки() Экспорт
210+
211+
КаталогОбработки = ПолучитьКаталогТестовойОбработки();
212+
213+
КаталогВыгрузки = ВременныеФайлы.СоздатьКаталог();
214+
215+
Исполнитель = ЗагрузитьИсполнителя();
216+
Исполнитель.Компилировать(КаталогОбработки.ПолноеИмя, КаталогВыгрузки);
217+
218+
ИмяФайлаОбработки = КаталогОбработки.Имя;
219+
НайденныеФайлы = НайтиФайлы(КаталогВыгрузки, ИмяФайлаОбработки + ".epf");
220+
221+
Ожидаем.Что(НайденныеФайлы, "ожидаем, что в КаталогВыгрузки найден файл обработки").ИмеетДлину(1);
222+
223+
КонецПроцедуры
224+
195225
//}
196226

197227
//{ служебные методы

v8files-extractor.os

Lines changed: 59 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,12 @@
6363
ИначеЕсли Команда = ВозможныеКоманды().ОбработатьИзмененияИзГит Тогда
6464
ОбработатьИзмененияИзГит(Аргументы.ЗначенияПараметров["ВыходнойКаталог"]);
6565
ИначеЕсли Команда = ВозможныеКоманды().Компилировать Тогда
66-
Компилировать(Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], Аргументы.ЗначенияПараметров["ВыходнойКаталог"], Аргументы.ЗначенияПараметров["--type"]);
66+
Компилировать(
67+
Аргументы.ЗначенияПараметров["ПутьВходящихДанных"],
68+
Аргументы.ЗначенияПараметров["ВыходнойКаталог"],
69+
Аргументы.ЗначенияПараметров["--type"],
70+
Аргументы.ЗначенияПараметров["--recursive"]
71+
);
6772
КонецЕсли;
6873

6974
Исключение
@@ -102,6 +107,7 @@
102107
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьВходящихДанных");
103108
Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВыходнойКаталог");
104109
Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--type");
110+
Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--recursive");
105111
Парсер.ДобавитьКоманду(ОписаниеКоманды);
106112
КонецПроцедуры
107113

@@ -271,9 +277,10 @@
271277
Сообщить(" Показ этого экрана");
272278
Сообщить(" --git-precommit outputPath");
273279
Сообщить(" Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс");
274-
Сообщить(" --compile inputPath outputPath [--type TYPE]");
280+
Сообщить(" --compile inputPath outputPath [--type TYPE] [--recursive]");
275281
Сообщить(" Собрать внешний файл/обработку.");
276282
Сообщить(" В параметре --type указывается тип файла для сборки (epf/erf). Значение по умолчанию - epf");
283+
Сообщить(" Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога");
277284
КонецПроцедуры
278285

279286

@@ -426,11 +433,7 @@
426433

427434
КонецПроцедуры
428435

429-
Функция Компилировать(Знач Путь, Знач КаталогВыгрузки, Знач ТипФайла)
430-
431-
Если ТипФайла = Неопределено Тогда
432-
ТипФайла = "epf";
433-
КонецЕсли;
436+
Функция Компилировать(Знач Путь, Знач КаталогВыгрузки, Знач ТипФайла = "epf", Знач Рекурсивно = Ложь) Экспорт
434437

435438
ПутьКИсходникам = ОбъединитьПути(ТекущийКаталог(), Путь);
436439

@@ -439,12 +442,52 @@
439442
Ожидаем.Что(ПапкаИсходников.Существует(), "Папка " + ПутьКИсходникам + " должна существовать").ЭтоИстина();
440443
Ожидаем.Что(ПапкаИсходников.ЭтоКаталог(), "Путь " + ПутьКИсходникам + "должен быть каталогом").ЭтоИстина();
441444

445+
Если Рекурсивно Тогда
446+
СобратьКаталог(ПутьКИсходникам, КаталогВыгрузки, ТипФайла);
447+
Иначе
448+
СобратьФайл(ПутьКИсходникам, КаталогВыгрузки, ТипФайла);
449+
КонецЕсли;
450+
451+
КонецФункции
452+
453+
Процедура СобратьКаталог(Знач ПутьКИсходникам, КаталогВыгрузки, Знач ТипФайла)
454+
455+
СписокФайловВКаталоге = НайтиФайлы(ПутьКИсходникам);
456+
457+
Если НЕ Новый Файл(КаталогВыгрузки).Существует() Тогда
458+
СоздатьКаталог(КаталогВыгрузки);
459+
КонецЕсли;
460+
461+
Для Каждого Файл Из СписокФайловВКаталоге Цикл
462+
463+
Если НЕ Файл.ЭтоКаталог() Тогда
464+
Продолжить;
465+
КонецЕсли;
466+
467+
Если ЭтоПутьКИсходнымКодамОбработок(Файл.ПолноеИмя) Тогда
468+
СобратьФайл(Файл.ПолноеИмя, КаталогВыгрузки, ТипФайла);
469+
Иначе
470+
НовыйПутьВыгрузки = ОбъединитьПути(КаталогВыгрузки, Файл.Имя);
471+
СобратьКаталог(Файл.ПолноеИмя, НовыйПутьВыгрузки, ТипФайла);
472+
КонецЕсли;
473+
474+
КонецЦикла;
475+
476+
КонецПроцедуры
477+
478+
Функция СобратьФайл(Знач ПутьКИсходникам, Знач КаталогВыгрузки, Знач ТипФайла)
479+
480+
Лог.Информация("Собираю исходники <"+ПутьКИсходникам+">");
481+
482+
ПапкаИсходников = Новый Файл(ПутьКИсходникам);
483+
442484
ИмяПапки = ПапкаИсходников.Имя;
443485
ИмяФайлаОбъекта = ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки, ИмяПапки + "." + ТипФайла);
444486

445487
Переименования = ПолучитьСоответствиеПереименований(ПутьКИсходникам);
446-
488+
447489
ВременныйКаталог = ВременныеФайлы.СоздатьКаталог();
490+
Лог.Информация("Восстанавливаю структуру исходников в <" + ВременныйКаталог + ">");
448491

449492
Для Каждого Переименование Из Переименования Цикл
450493

@@ -472,6 +515,13 @@
472515

473516
КонецФункции
474517

518+
Функция ЭтоПутьКИсходнымКодамОбработок(ПутьКПапке)
519+
520+
ФайлПереименования = Новый Файл(ОбъединитьПути(ПутьКПапке, "renames.txt"));
521+
Возврат ФайлПереименования.Существует();
522+
523+
КонецФункции
524+
475525
// Функция - Получает соответствие переименований файлов обработки на основе
476526
// файла renames.txt
477527
//
@@ -483,8 +533,7 @@
483533
// раскладывании файлов по иерархии)
484534
//
485535
Функция ПолучитьСоответствиеПереименований(ПутьКИсходникам)
486-
Лог.Информация("Собираю исходники <"+ПутьКИсходникам+">");
487-
536+
488537
Переименования = Новый Соответствие;
489538

490539
ФайлПереименования = Новый Файл(ОбъединитьПути(ПутьКИсходникам, "renames.txt"));

0 commit comments

Comments
 (0)