Skip to content

Commit e562c2d

Browse files
authored
Merge pull request xDrivenDevelopment#97 from oscript-library/develop
Запуск precommit1c из командной строки с полным набором параметров
2 parents 995232e + 4b3b775 commit e562c2d

File tree

7 files changed

+84
-99
lines changed

7 files changed

+84
-99
lines changed

commands.os

Lines changed: 0 additions & 80 deletions
This file was deleted.

copy-to-hook.cmd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
@echo copy current version repo
44

5-
xcopy .\ibService .\..\..\.git\hooks\ibService\ /Y /E /F
65
xcopy .\pre-commit .\..\..\.git\hooks\ /Y /F
76
mkdir .\..\..\.git\hooks\v8Reader
87
xcopy .\v8Reader\V8Reader.epf .\..\..\.git\hooks\v8Reader\ /Y /F

create-links-in-hooks.bat

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ popd
44

55
mklink /D /H ".git/hooks/pre-commit" "%~dp0pre-commit"
66
mklink /D /H ".git/hooks/v8files-extractor.os" "%~dp0v8files-extractor.os"
7-
mklink /J ".git/hooks/ibService" "%~dp0ibService"
87
mklink /J ".git/hooks/v8Reader" "%~dp0v8Reader"
98
mklink /J ".git/hooks/tools" "%~dp0tools"
109
git config --local core.quotepath false

ibService/1Cv8.1CD

-660 KB
Binary file not shown.

packagedef

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11

22
Описание.Имя("precommit1c")
3-
.Версия("2.0.4")
3+
.Версия("2.0.5")
44
.ЗависитОт("logos")
55
.ЗависитОт("cmdline")
66
.ЗависитОт("tempfiles")
77
.ЗависитОт("asserts")
88
.ЗависитОт("v8runner")
99
.ЗависитОт("strings")
10-
.ИсполняемыйФайл("commands.os");
10+
.ИсполняемыйФайл("v8files-extractor.os");
1111

1212
ФайлыКаталога = НайтиФайлы(ТекущийСценарий().Каталог, ПолучитьМаскуВсеФайлы());
1313
Для Каждого Файл Из ФайлыКаталога Цикл

tests/v8files-extractor-test.os

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
ВсеТесты.Добавить("Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогами");
2626
ВсеТесты.Добавить("Тест_ДолженОбработатьИзмененияИзГитДляКаталогаСВложеннымиКаталогамиИУдалитьИзКеша");
2727
ВсеТесты.Добавить("Тест_ДолженСобратьФайлОбработкиИзЗаданнойПапки");
28+
ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоПрекоммит1СУстановленВХуки");
2829

2930
Возврат ВсеТесты;
3031

@@ -315,21 +316,8 @@
315316

316317
Лог.Отладка("КаталогHooks.ПолноеИмя " + КаталогHooks.ПолноеИмя);
317318

318-
КаталогСервиснойИБ = Новый Файл(ОбъединитьПути(КаталогПроекта, "ibService"));
319319
Каталог_v8Reader = Новый Файл(ОбъединитьПути(КаталогПроекта, "v8Reader"));
320-
Лог.Отладка("КаталогСервиснойИБ.ПолноеИмя " + КаталогСервиснойИБ.ПолноеИмя);
321-
322-
КаталогСервиснойИБ_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "ibService"));
323-
ПересоздатьКаталог(КаталогСервиснойИБ_конечный);
324-
Лог.Отладка("КаталогСервиснойИБ_конечный.ПолноеИмя " + КаталогСервиснойИБ_конечный.ПолноеИмя);
325-
326-
КопироватьДеревоФайлов(КаталогСервиснойИБ.ПолноеИмя, КаталогСервиснойИБ_конечный.ПолноеИмя);
327-
Ожидаем.Что(КаталогСервиснойИБ_конечный.Существует(), "Должен существовать конечный каталог сервисной ИБ, а это не так").ЭтоИстина();
328-
329-
ФайлСервиснойИБ = Новый Файл(ОбъединитьПути(КаталогСервиснойИБ_конечный.ПолноеИмя, "1Cv8.1CD"));
330-
Лог.Отладка("ФайлСервиснойИБ.ПолноеИмя " + ФайлСервиснойИБ.ПолноеИмя);
331-
Ожидаем.Что(ФайлСервиснойИБ.Существует(), "Должен существовать файл сервисной ИБ, а это не так").ЭтоИстина();
332-
320+
333321
Каталог_v8Reader_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "v8Reader"));
334322
ПересоздатьКаталог(Каталог_v8Reader_конечный);
335323

@@ -349,6 +337,32 @@
349337
Ожидаем.Что(Файл_сценария_конечный.Существует(), "Должен существовать Файл_сценария_конечный, а это не так").ЭтоИстина();
350338
КонецПроцедуры
351339

340+
Процедура Тест_ДолженПроверитьЧтоПрекоммит1СУстановленВХуки() Экспорт
341+
342+
КаталогПроекта = КаталогПроекта();
343+
КаталогРепо = ВременныеФайлы.СоздатьКаталог();
344+
УстановитьТекущийКаталог(КаталогРепо);
345+
ВыполнитьКомандуГит("git init");
346+
Исполнитель = ЗагрузитьИсполнителя();
347+
Исполнитель.УстановитьВКаталог(КаталогРепо);
348+
349+
КаталогHooks = Новый Файл(ОбъединитьПути(КаталогРепо, ".git", "hooks"));
350+
Ожидаем.Что(КаталогHooks.Существует(), "Должен существовать исходный каталог сервисной ИБ, а это не так").ЭтоИстина();
351+
352+
Каталог_v8Reader_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "v8Reader"));
353+
Файл_v8Reader_конечный = Новый Файл(ОбъединитьПути(Каталог_v8Reader_конечный.ПолноеИмя, "V8Reader.epf"));
354+
Ожидаем.Что(Файл_v8Reader_конечный.Существует(), "Должен существовать Файл_v8Reader_конечный, а это не так").ЭтоИстина();
355+
356+
Файл_pre_commit_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "pre-commit"));
357+
Ожидаем.Что(Файл_pre_commit_конечный.Существует(), "Должен существовать Файл_pre_commit_конечный, а это не так").ЭтоИстина();
358+
359+
Лог.Отладка("Файл_pre_commit_конечный.ПолноеИмя " + Файл_pre_commit_конечный);
360+
Файл_сценария_исходный = Новый Файл(ОбъединитьПути(КаталогПроекта, "v8files-extractor.os"));
361+
Файл_сценария_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, Файл_сценария_исходный.Имя));
362+
Ожидаем.Что(Файл_сценария_конечный.Существует(), "Должен существовать Файл_сценария_конечный, а это не так").ЭтоИстина();
363+
364+
КонецПроцедуры
365+
352366
Функция КаталогСодержитИсходникиОбработки(Знач Каталог)
353367
ВыгруженныеФайлы = НайтиФайлы(Каталог, ПолучитьМаскуВсеФайлы());
354368
ИменаВыгруженныхФайлов = РазвернутьМассивФайловВИменаФайлов(ВыгруженныеФайлы);

v8files-extractor.os

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
Функция Версия() Экспорт
2828

29-
Версия = "2.0.4";
29+
Версия = "2.0.5";
3030

3131
Возврат "v" + Версия;
3232

@@ -40,6 +40,7 @@
4040
мВозможныеКоманды.Вставить("Помощь", "--help");
4141
мВозможныеКоманды.Вставить("ОбработатьИзмененияИзГит", "--git-precommit");
4242
мВозможныеКоманды.Вставить("Компилировать", "--compile");
43+
мВозможныеКоманды.Вставить("Установить", "--install");
4344
КонецЕсли;
4445

4546
Возврат мВозможныеКоманды;
@@ -100,6 +101,8 @@
100101
Аргументы.ЗначенияПараметров["ВыходнойКаталог"],
101102
Аргументы.ЗначенияПараметров["--recursive"]
102103
);
104+
ИначеЕсли Команда = ВозможныеКоманды().Установить Тогда
105+
УстановитьВКаталог(ТекущийКаталог());
103106
КонецЕсли;
104107

105108
Исключение
@@ -297,6 +300,42 @@
297300

298301
КонецПроцедуры
299302

303+
Процедура УстановитьВКаталог(Знач Каталог) Экспорт
304+
305+
КаталогГит = Новый Файл(ОбъединитьПути(Каталог, ".git"));
306+
Если Не КаталогГит.Существует() Тогда
307+
ВызватьИсключение "Каталог не является репозиторием GIT";
308+
КонецЕсли;
309+
310+
КаталогПрекоммита = ТекущийСценарий().Каталог;
311+
КаталогХуков = ОбъединитьПути(Каталог, ".git", "hooks");
312+
ОбеспечитьКаталог(КаталогХуков);
313+
314+
КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "pre-commit");
315+
КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "v8Reader");
316+
КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "v8files-extractor.os");
317+
КопироватьВКаталог(КаталогПрекоммита, КаталогХуков, "tools");
318+
319+
ЗапуститьПриложение("git config --local core.quotepath false", Каталог, Истина);
320+
ЗапуститьПриложение("git config --local core.longpaths true", Каталог, Истина);
321+
322+
Лог.Информация("Установка завершена");
323+
324+
КонецПроцедуры
325+
326+
Процедура КопироватьВКаталог(Знач КаталогИсточник, Знач КаталогПриемник, Знач ОбъектКопирования)
327+
328+
Лог.Информация("Копирую: " + ОбъектКопирования);
329+
ФайлИсточник = Новый Файл(ОбъединитьПути(КаталогИсточник, ОбъектКопирования));
330+
ФайлПриемник = Новый Файл(ОбъединитьПути(КаталогПриемник, ОбъектКопирования));
331+
Если ФайлИсточник.ЭтоКаталог() Тогда
332+
КопироватьСодержимоеКаталога(ФайлИсточник.ПолноеИмя, ФайлПриемник.ПолноеИмя);
333+
Иначе
334+
КопироватьФайл(ФайлИсточник.ПолноеИмя, ФайлПриемник.ПолноеИмя);
335+
КонецЕсли;
336+
337+
КонецПроцедуры
338+
300339
Процедура ОбеспечитьПустойКаталог(Знач ФайлОбъектКаталога)
301340

302341
Если Не ФайлОбъектКаталога.Существует() Тогда
@@ -311,6 +350,18 @@
311350

312351
КонецПроцедуры
313352

353+
Процедура ОбеспечитьКаталог(Знач Путь)
354+
355+
ФайлОбъектКаталога = Новый Файл(Путь);
356+
Если Не ФайлОбъектКаталога.Существует() Тогда
357+
Лог.Отладка("Создаем новый каталог " + ФайлОбъектКаталога.ПолноеИмя);
358+
СоздатьКаталог(ФайлОбъектКаталога.ПолноеИмя);
359+
ИначеЕсли Не ФайлОбъектКаталога.ЭтоКаталог() Тогда
360+
ВызватьИсключение "Путь " + ФайлОбъектКаталога.ПолноеИмя + " не является каталогом. Выгрузка невозможна";
361+
КонецЕсли;
362+
363+
КонецПроцедуры
364+
314365

315366
Процедура ВывестиСправку()
316367
Сообщить("Утилита сборки/разборки внешних файлов 1С");
@@ -328,6 +379,8 @@
328379
Сообщить(" --compile inputPath outputPath [--recursive]");
329380
Сообщить(" Собрать внешний файл/обработку.");
330381
Сообщить(" Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога");
382+
Сообщить(" --install");
383+
Сообщить(" Установить precommit1c для текущего репозитория git");
331384
КонецПроцедуры
332385

333386

0 commit comments

Comments
 (0)