|
66 | 66 | Компилировать( |
67 | 67 | Аргументы.ЗначенияПараметров["ПутьВходящихДанных"], |
68 | 68 | Аргументы.ЗначенияПараметров["ВыходнойКаталог"], |
69 | | - Аргументы.ЗначенияПараметров["--type"], |
70 | 69 | Аргументы.ЗначенияПараметров["--recursive"] |
71 | 70 | ); |
72 | 71 | КонецЕсли; |
|
106 | 105 | ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().Компилировать); |
107 | 106 | Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ПутьВходящихДанных"); |
108 | 107 | Парсер.ДобавитьПозиционныйПараметрКоманды(ОписаниеКоманды, "ВыходнойКаталог"); |
109 | | - Парсер.ДобавитьИменованныйПараметрКоманды(ОписаниеКоманды, "--type"); |
110 | 108 | Парсер.ДобавитьПараметрФлагКоманды(ОписаниеКоманды, "--recursive"); |
111 | 109 | Парсер.ДобавитьКоманду(ОписаниеКоманды); |
112 | 110 | КонецПроцедуры |
|
277 | 275 | Сообщить(" Показ этого экрана"); |
278 | 276 | Сообщить(" --git-precommit outputPath"); |
279 | 277 | Сообщить(" Запустить чтение индекса из git и определить список файлов для разбора, разложить их и добавить исходники в индекс"); |
280 | | - Сообщить(" --compile inputPath outputPath [--type TYPE] [--recursive]"); |
| 278 | + Сообщить(" --compile inputPath outputPath [--recursive]"); |
281 | 279 | Сообщить(" Собрать внешний файл/обработку."); |
282 | | - Сообщить(" В параметре --type указывается тип файла для сборки (epf/erf). Значение по умолчанию - epf"); |
283 | 280 | Сообщить(" Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога"); |
284 | 281 | КонецПроцедуры |
285 | 282 |
|
|
433 | 430 |
|
434 | 431 | КонецПроцедуры |
435 | 432 |
|
436 | | -Функция Компилировать(Знач Путь, Знач КаталогВыгрузки, Знач ТипФайла = "epf", Знач Рекурсивно = Ложь) Экспорт |
| 433 | +Функция Компилировать(Знач Путь, Знач КаталогВыгрузки, Знач Рекурсивно = Ложь) Экспорт |
437 | 434 |
|
438 | 435 | ПутьКИсходникам = ОбъединитьПути(ТекущийКаталог(), Путь); |
439 | 436 |
|
|
443 | 440 | Ожидаем.Что(ПапкаИсходников.ЭтоКаталог(), "Путь " + ПутьКИсходникам + "должен быть каталогом").ЭтоИстина(); |
444 | 441 |
|
445 | 442 | Если Рекурсивно Тогда |
446 | | - СобратьКаталог(ПутьКИсходникам, КаталогВыгрузки, ТипФайла); |
| 443 | + СобратьКаталог(ПутьКИсходникам, КаталогВыгрузки); |
447 | 444 | Иначе |
448 | | - СобратьФайл(ПутьКИсходникам, КаталогВыгрузки, ТипФайла); |
| 445 | + СобратьФайл(ПутьКИсходникам, КаталогВыгрузки); |
449 | 446 | КонецЕсли; |
450 | 447 |
|
451 | 448 | КонецФункции |
452 | 449 |
|
453 | | -Процедура СобратьКаталог(Знач ПутьКИсходникам, КаталогВыгрузки, Знач ТипФайла) |
| 450 | +Процедура СобратьКаталог(Знач ПутьКИсходникам, КаталогВыгрузки) |
454 | 451 |
|
455 | 452 | СписокФайловВКаталоге = НайтиФайлы(ПутьКИсходникам); |
456 | 453 |
|
|
465 | 462 | КонецЕсли; |
466 | 463 |
|
467 | 464 | Если ЭтоПутьКИсходнымКодамОбработок(Файл.ПолноеИмя) Тогда |
468 | | - СобратьФайл(Файл.ПолноеИмя, КаталогВыгрузки, ТипФайла); |
| 465 | + СобратьФайл(Файл.ПолноеИмя, КаталогВыгрузки); |
469 | 466 | Иначе |
470 | 467 | НовыйПутьВыгрузки = ОбъединитьПути(КаталогВыгрузки, Файл.Имя); |
471 | | - СобратьКаталог(Файл.ПолноеИмя, НовыйПутьВыгрузки, ТипФайла); |
| 468 | + СобратьКаталог(Файл.ПолноеИмя, НовыйПутьВыгрузки); |
472 | 469 | КонецЕсли; |
473 | 470 |
|
474 | 471 | КонецЦикла; |
475 | 472 |
|
476 | 473 | КонецПроцедуры |
477 | 474 |
|
478 | | -Функция СобратьФайл(Знач ПутьКИсходникам, Знач КаталогВыгрузки, Знач ТипФайла) |
479 | | - |
| 475 | +Функция СобратьФайл(Знач ПутьКИсходникам, Знач КаталогВыгрузки) |
| 476 | + |
480 | 477 | Лог.Информация("Собираю исходники <"+ПутьКИсходникам+">"); |
481 | 478 |
|
482 | 479 | ПапкаИсходников = Новый Файл(ПутьКИсходникам); |
483 | 480 |
|
484 | | - ИмяПапки = ПапкаИсходников.Имя; |
485 | | - ИмяФайлаОбъекта = ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки, ИмяПапки + "." + ТипФайла); |
486 | | - |
487 | 481 | Переименования = ПолучитьСоответствиеПереименований(ПутьКИсходникам); |
488 | 482 |
|
489 | 483 | ВременныйКаталог = ВременныеФайлы.СоздатьКаталог(); |
|
508 | 502 |
|
509 | 503 | КонецЦикла; |
510 | 504 |
|
| 505 | + ТипФайла = ПолучитьТипФайлаПоКаталогуИсходников(ВременныйКаталог); |
| 506 | + |
| 507 | + ИмяПапки = ПапкаИсходников.Имя; |
| 508 | + ИмяФайлаОбъекта = ОбъединитьПути(ТекущийКаталог(), КаталогВыгрузки, ИмяПапки + "." + ТипФайла); |
| 509 | + |
511 | 510 | СобратьФайлИзИсходников(ВременныйКаталог, ИмяФайлаОбъекта); |
512 | 511 | Лог.Информация("Успешно собран файл "+ИмяФайлаОбъекта); |
513 | 512 |
|
|
522 | 521 |
|
523 | 522 | КонецФункции |
524 | 523 |
|
| 524 | +Функция ПолучитьТипФайлаПоКаталогуИсходников(Знач КаталогИсходников) |
| 525 | + |
| 526 | + ПутьКФайлуРут = ОбъединитьПути(КаталогИсходников, "root"); |
| 527 | + ФайлРут = Новый Файл(ПутьКФайлуРут); |
| 528 | + |
| 529 | + Ожидаем.Что(ФайлРут.Существует(), "Файл <" + ПутьКФайлуРут + "> должен существовать").ЭтоИстина(); |
| 530 | + Ожидаем.Что(ФайлРут.ЭтоКаталог(), "<" + ПутьКФайлуРут + "> должен быть файлом").ЭтоЛожь(); |
| 531 | + |
| 532 | + ЧтениеТекста = Новый ЧтениеТекста(ПутьКФайлуРут); |
| 533 | + СодержаниеРут = ЧтениеТекста.Прочитать(); |
| 534 | + ЧтениеТекста.Закрыть(); |
| 535 | + МассивСтрокРут = СтрРазделить(СодержаниеРут, ","); |
| 536 | + Ожидаем.Что(МассивСтрокРут.Количество(), "Некорректный формат файла root").Больше(1); |
| 537 | + |
| 538 | + ПутьКФайлуКорневойКонтейнер = ОбъединитьПути(КаталогИсходников, МассивСтрокРут[1]); |
| 539 | + ФайлКорневойКонтейнер = Новый Файл(ПутьКФайлуКорневойКонтейнер); |
| 540 | + |
| 541 | + Ожидаем.Что(ФайлКорневойКонтейнер.Существует(), "Файл <" + ПутьКФайлуКорневойКонтейнер + "> должен существовать").ЭтоИстина(); |
| 542 | + Ожидаем.Что(ФайлКорневойКонтейнер.ЭтоКаталог(), "<" + ПутьКФайлуКорневойКонтейнер + "> должен быть файлом").ЭтоЛожь(); |
| 543 | + |
| 544 | + ЧтениеТекста = Новый ЧтениеТекста(ПутьКФайлуКорневойКонтейнер); |
| 545 | + СодержаниеКорневойКонтейнер = ""; |
| 546 | + Для сч = 1 По 7 Цикл |
| 547 | + ПрочитаннаяСтрока = ЧтениеТекста.ПрочитатьСтроку(); |
| 548 | + Если ПрочитаннаяСтрока = Неопределено Тогда |
| 549 | + Прервать; |
| 550 | + КонецЕсли; |
| 551 | + |
| 552 | + СодержаниеКорневойКонтейнер = СодержаниеКорневойКонтейнер + ПрочитаннаяСтрока; |
| 553 | + КонецЦикла; |
| 554 | + ЧтениеТекста.Закрыть(); |
| 555 | + |
| 556 | + МассивСтрокКорневойКонтейнер = СтрРазделить(СодержаниеКорневойКонтейнер, ","); |
| 557 | + Ожидаем.Что(МассивСтрокКорневойКонтейнер.Количество(), "Некорректный формат файла корневого контейнера <" + ПутьКФайлуКорневойКонтейнер + ">").Больше(3); |
| 558 | + |
| 559 | + ИдентификаторТипаОбъекта = СокрЛП(МассивСтрокКорневойКонтейнер[3]); |
| 560 | + Если Лев(ИдентификаторТипаОбъекта, 1) = "{" Тогда |
| 561 | + ИдентификаторТипаОбъекта = Прав(ИдентификаторТипаОбъекта, СтрДлина(ИдентификаторТипаОбъекта) - 1); |
| 562 | + КонецЕсли; |
| 563 | + Если Прав(ИдентификаторТипаОбъекта, 1) = "}" Тогда |
| 564 | + ИдентификаторТипаОбъекта = Лев(ИдентификаторТипаОбъекта, СтрДлина(ИдентификаторТипаОбъекта) - 1); |
| 565 | + КонецЕсли; |
| 566 | + |
| 567 | + ИдентификаторТипаОбъекта = НРег(СокрЛП(ИдентификаторТипаОбъекта)); |
| 568 | + |
| 569 | + Если ИдентификаторТипаОбъекта = "c3831ec8-d8d5-4f93-8a22-f9bfae07327f" Тогда |
| 570 | + ТипФайла = "epf"; |
| 571 | + ИначеЕсли ИдентификаторТипаОбъекта = "e41aff26-25cf-4bb6-b6c1-3f478a75f374" Тогда |
| 572 | + ТипФайла = "erf"; |
| 573 | + Иначе |
| 574 | + ВызватьИсключение("Некорректный идентификатор типа собираемого объекта <" + ИдентификаторТипаОбъекта + ">"); |
| 575 | + КонецЕсли; |
| 576 | + |
| 577 | + Возврат ТипФайла; |
| 578 | + |
| 579 | +КонецФункции |
| 580 | + |
525 | 581 | // Функция - Получает соответствие переименований файлов обработки на основе |
526 | 582 | // файла renames.txt |
527 | 583 | // |
|
0 commit comments