1+
2+ #Использовать cmdline
3+ #Использовать tempfiles
4+
5+ Функция НастроитьПарсер ()
6+
7+ Парсер = Новый ПарсерАргументовКоманднойСтроки();
8+ Команда = Парсер.ОписаниеКоманды("install" , "Установка precommit в текущий git репозиторий" );
9+ Парсер.ДобавитьКоманду(Команда);
10+
11+ Возврат Парсер;
12+
13+ КонецФункции // НастроитьПарсер()
14+
15+ Процедура ВыполнитьОбработку (Знач Парсер , Знач МассивАргументов )
16+
17+ Успех = Ложь ;
18+
19+ Результат = Парсер.Разобрать(МассивАргументов);
20+ Если ТипЗнч (Результат) = Тип ("Структура" ) Тогда
21+ Если Результат.Команда = "install" Тогда
22+ УстановитьВКаталог(ТекущийКаталог());
23+ Успех = Истина ;
24+ КонецЕсли ;
25+ КонецЕсли ;
26+
27+ Если Не Успех Тогда
28+ Сообщить ("Не удалось выполнить команду. Обратитесь к разработчикам" );
29+ ЗавершитьРаботу(1 );
30+ КонецЕсли ;
31+
32+ КонецПроцедуры
33+
34+ Процедура УстановитьВКаталог (Знач Каталог )
35+
36+ КаталогПрекоммита = ТекущийСценарий().Каталог;
37+ ФайлЛога = ВременныеФайлы.НовоеИмяФайла();
38+ ФайлСкрипта = ВременныеФайлы.НовоеИмяФайла("cmd" );
39+
40+ ЗаписьТекста = Новый ЗаписьТекста(ФайлСкрипта, "cp866" );
41+ ЗаписьТекста.ЗаписатьСтроку("@echo off" );
42+ ЗаписьТекста.ЗаписатьСтроку("xcopy "" " + КаталогПрекоммита + """ \ibService "" " + Каталог+ """ \.git\hooks\ibService\ /Y /E /F" );
43+ ЗаписьТекста.ЗаписатьСтроку("xcopy "" " + КаталогПрекоммита + """ \pre-commit "" " + Каталог+ """ \.git\hooks\ /Y /F" );
44+ ЗаписьТекста.ЗаписатьСтроку("mkdir "" " + Каталог+ """ \.git\hooks\v8Reader" );
45+ ЗаписьТекста.ЗаписатьСтроку("xcopy "" " + КаталогПрекоммита + """ \v8Reader\V8Reader.epf "" " + Каталог+ """ \.git\hooks\v8Reader\ /Y /F" );
46+ ЗаписьТекста.ЗаписатьСтроку("xcopy "" " + КаталогПрекоммита + """ \v8files-extractor.os "" " + Каталог+ """ \.git\hooks\ /Y /F" );
47+ ЗаписьТекста.ЗаписатьСтроку("mkdir "" " + Каталог+ """ \.git\hooks\tools" );
48+ ЗаписьТекста.ЗаписатьСтроку("xcopy "" " + КаталогПрекоммита + """ \tools\v8unpack.exe "" " + Каталог+ """ \.git\hooks\tools\ /Y /F" );
49+ ЗаписьТекста.ЗаписатьСтроку("xcopy "" " + КаталогПрекоммита + """ \tools\v8unpack.exe "" " + Каталог+ """ \.git\hooks\tools\ /Y /F" );
50+ ЗаписьТекста.ЗаписатьСтроку("cd "" " + Каталог+ """ \" );
51+ ЗаписьТекста.ЗаписатьСтроку("git config --local core.quotepath false" );
52+ ЗаписьТекста.Закрыть();
53+
54+ КомандаЗапуска = СтрШаблон ("cmd /C "" %1"" > %2 2>&1" ,
55+ ОбъединитьПути(КаталогПрекоммита, ФайлСкрипта),
56+ ФайлЛога);
57+
58+ ЗапуститьПриложение (КомандаЗапуска,, Истина );
59+
60+ ЧтениеТекста = Новый ЧтениеТекста(ФайлЛога, "cp866" );
61+ Текст = ЧтениеТекста.Прочитать();
62+ ЧтениеТекста.Закрыть();
63+ Сообщить (Текст);
64+
65+ Сообщить ("Установка завершена" );
66+
67+ КонецПроцедуры
68+
69+ ////////////////////////////////////////////////////////////////////////////
70+
71+ Попытка
72+ Парсер = НастроитьПарсер();
73+ ВыполнитьОбработку(Парсер, АргументыКоманднойСтроки);
74+ Исключение
75+ ВременныеФайлы.Удалить();
76+ ВызватьИсключение ;
77+ КонецПопытки ;
78+
79+ ВременныеФайлы.Удалить();
0 commit comments