diff --git a/commands.os b/commands.os new file mode 100644 index 0000000..f30ec76 --- /dev/null +++ b/commands.os @@ -0,0 +1,80 @@ + +#Использовать cmdline +#Использовать tempfiles + +Функция НастроитьПарсер() + + Парсер = Новый ПарсерАргументовКоманднойСтроки(); + Команда = Парсер.ОписаниеКоманды("install", "Установка precommit1c в текущий git репозиторий"); + Парсер.ДобавитьКоманду(Команда); + + Возврат Парсер; + +КонецФункции // НастроитьПарсер() + +Процедура ВыполнитьОбработку(Знач Парсер, Знач МассивАргументов) + + Успех = Ложь; + + Результат = Парсер.Разобрать(МассивАргументов); + Если ТипЗнч(Результат) = Тип("Структура") Тогда + Если Результат.Команда = "install" Тогда + УстановитьВКаталог(ТекущийКаталог()); + Успех = Истина; + КонецЕсли; + КонецЕсли; + + Если Не Успех Тогда + Сообщить("Не удалось выполнить команду. Обратитесь к разработчикам"); + ЗавершитьРаботу(1); + КонецЕсли; + +КонецПроцедуры + +Процедура УстановитьВКаталог(Знач Каталог) + + КаталогПрекоммита = ТекущийСценарий().Каталог; + ФайлЛога = ВременныеФайлы.НовоеИмяФайла(); + ФайлСкрипта = ВременныеФайлы.НовоеИмяФайла("cmd"); + + ЗаписьТекста = Новый ЗаписьТекста(ФайлСкрипта, "cp866"); + ЗаписьТекста.ЗаписатьСтроку("@echo off"); + ЗаписьТекста.ЗаписатьСтроку("xcopy """ + КаталогПрекоммита + """\ibService """+Каталог+"""\.git\hooks\ibService\ /Y /E /F"); + ЗаписьТекста.ЗаписатьСтроку("xcopy """ + КаталогПрекоммита + """\pre-commit """+Каталог+"""\.git\hooks\ /Y /F"); + ЗаписьТекста.ЗаписатьСтроку("mkdir """+Каталог+"""\.git\hooks\v8Reader"); + ЗаписьТекста.ЗаписатьСтроку("xcopy """ + КаталогПрекоммита + """\v8Reader\V8Reader.epf """+Каталог+"""\.git\hooks\v8Reader\ /Y /F"); + ЗаписьТекста.ЗаписатьСтроку("xcopy """ + КаталогПрекоммита + """\v8files-extractor.os """+Каталог+"""\.git\hooks\ /Y /F"); + ЗаписьТекста.ЗаписатьСтроку("mkdir """+Каталог+"""\.git\hooks\tools"); + ЗаписьТекста.ЗаписатьСтроку("xcopy """ + КаталогПрекоммита + """\tools\v8unpack.exe """+Каталог+"""\.git\hooks\tools\ /Y /F"); + ЗаписьТекста.ЗаписатьСтроку("xcopy """ + КаталогПрекоммита + """\tools\v8unpack.exe """+Каталог+"""\.git\hooks\tools\ /Y /F"); + ЗаписьТекста.ЗаписатьСтроку("cd """+Каталог+"""\"); + ЗаписьТекста.ЗаписатьСтроку("git config --local core.quotepath false"); + ЗаписьТекста.ЗаписатьСтроку("git config --local core.longpaths true"); + ЗаписьТекста.Закрыть(); + + КомандаЗапуска = СтрШаблон("cmd /C ""%1"" > %2 2>&1", + ФайлСкрипта, + ФайлЛога); + + ЗапуститьПриложение(КомандаЗапуска,,Истина); + + ЧтениеТекста = Новый ЧтениеТекста(ФайлЛога, "cp866"); + Текст = ЧтениеТекста.Прочитать(); + ЧтениеТекста.Закрыть(); + Сообщить(Текст); + + Сообщить("Установка завершена"); + +КонецПроцедуры + +//////////////////////////////////////////////////////////////////////////// + +Попытка + Парсер = НастроитьПарсер(); + ВыполнитьОбработку(Парсер, АргументыКоманднойСтроки); +Исключение + ВременныеФайлы.Удалить(); + ВызватьИсключение; +КонецПопытки; + +ВременныеФайлы.Удалить(); diff --git a/packagedef b/packagedef new file mode 100644 index 0000000..3761d73 --- /dev/null +++ b/packagedef @@ -0,0 +1,17 @@ + +Описание.Имя("precommit1c") + .Версия("2.0.4") + .ЗависитОт("logos") + .ЗависитОт("cmdline") + .ЗависитОт("tempfiles") + .ЗависитОт("asserts") + .ЗависитОт("v8runner") + .ЗависитОт("strings") + .ИсполняемыйФайл("commands.os"); + +ФайлыКаталога = НайтиФайлы(ТекущийСценарий().Каталог, ПолучитьМаскуВсеФайлы()); +Для Каждого Файл Из ФайлыКаталога Цикл + Если Лев(Файл.Имя,1) <> "." Тогда + Описание.ВключитьФайл(Файл.Имя); + КонецЕсли; +КонецЦикла;