#Использовать logos Перем Лог; Перем КаталогСборки; Процедура Инициализация() Лог = Логирование.ПолучитьЛог("precommit1c.app.build"); Лог.УстановитьУровень(УровниЛога.Информация); КаталогСборки = ОбъединитьПути(ТекущийКаталог(), "build"); ОбеспечитьПустойКаталог(КаталогСборки); КонецПроцедуры Функция ОбернутьВКавычки(Знач Строка) Возврат """" + Строка + """"; КонецФункции Процедура ВыполнитьКоманду(Знач КомандаЗапуска, Знач ТекстОшибки = "", Знач РабочийКаталог = "") Лог.Информация("Выполняю команду: " + КомандаЗапуска); Процесс = СоздатьПроцесс("cmd.exe /C " + ОбернутьВКавычки(КомандаЗапуска), РабочийКаталог, Истина, , КодировкаТекста.UTF8); Процесс.Запустить(); Процесс.ОжидатьЗавершения(); Пока НЕ Процесс.Завершен ИЛИ Процесс.ПотокВывода.ЕстьДанные Цикл СтрокаВывода = Процесс.ПотокВывода.ПрочитатьСтроку(); Сообщить(СтрокаВывода); КонецЦикла; Если Процесс.КодВозврата <> 0 Тогда Лог.Ошибка("Код возврата: " + Процесс.КодВозврата); ВызватьИсключение ТекстОшибки + Символы.ПС + Процесс.ПотокОшибок.Прочитать(); КонецЕсли; КонецПроцедуры Процедура ОбеспечитьПустойКаталог(Знач ПутьККаталогу) ФайлОбъектКаталога = Новый Файл(ПутьККаталогу); Если ФайлОбъектКаталога.Существует() Тогда Лог.Отладка("Очищаем каталог " + ФайлОбъектКаталога.ПолноеИмя); УдалитьФайлы(ФайлОбъектКаталога.ПолноеИмя, ПолучитьМаскуВсеФайлы()); КонецЕсли; Лог.Отладка("Создаем новый каталог " + ФайлОбъектКаталога.ПолноеИмя); СоздатьКаталог(ФайлОбъектКаталога.ПолноеИмя); КонецПроцедуры Процедура ДобавитьФайлВАрхив(Архив, ПутьКФайлу) Лог.Информация("Добавляем в архив файл/каталог <" + ПутьКФайлу + ">"); Архив.Добавить("./" + ПутьКФайлу, РежимСохраненияПутейZIP.СохранятьОтносительныеПути); КонецПроцедуры Процедура ВыполнитьСкрипт() Лог.Информация("Инициализация подмодуля v8reader"); ВыполнитьКоманду("git submodule update --init --recursive"); Архив = Новый ЗаписьZipФайла(); Архив.Открыть(ОбъединитьПути(КаталогСборки, "precommit1c.zip")); ДобавитьФайлВАрхив(Архив, "pre-commit"); ДобавитьФайлВАрхив(Архив, "v8files-extractor.os"); ДобавитьФайлВАрхив(Архив, "ibService"); ДобавитьФайлВАрхив(Архив, "tools"); ДобавитьФайлВАрхив(Архив, "v8Reader"); Архив.Записать(); КонецПроцедуры Инициализация(); ВыполнитьСкрипт();