Skip to content

Commit a8a8751

Browse files
committed
Доработал установку, как приложения. Все команды могут теперь вызываться через precommit1c <команда>
1 parent 995232e commit a8a8751

File tree

4 files changed

+90
-82
lines changed

4 files changed

+90
-82
lines changed

commands.os

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

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
.ЗависитОт("asserts")
88
.ЗависитОт("v8runner")
99
.ЗависитОт("strings")
10-
.ИсполняемыйФайл("commands.os");
10+
.ИсполняемыйФайл("v8files-extractor.os");
1111

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

tests/v8files-extractor-test.os

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

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

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

353+
Процедура Тест_ДолженПроверитьЧтоПрекоммит1СУстановленВХуки() Экспорт
354+
355+
КаталогПроекта = КаталогПроекта();
356+
КаталогРепо = ВременныеФайлы.СоздатьКаталог();
357+
УстановитьТекущийКаталог(КаталогРепо);
358+
ВыполнитьКомандуГит("git init");
359+
Исполнитель = ЗагрузитьИсполнителя();
360+
Исполнитель.УстановитьВКаталог(КаталогРепо);
361+
362+
КаталогHooks = Новый Файл(ОбъединитьПути(КаталогРепо, ".git", "hooks"));
363+
Ожидаем.Что(КаталогHooks.Существует(), "Должен существовать исходный каталог сервисной ИБ, а это не так").ЭтоИстина();
364+
365+
КаталогСервиснойИБ_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "ibService"));
366+
Ожидаем.Что(КаталогСервиснойИБ_конечный.Существует(), "Должен существовать конечный каталог сервисной ИБ, а это не так").ЭтоИстина();
367+
368+
ФайлСервиснойИБ = Новый Файл(ОбъединитьПути(КаталогСервиснойИБ_конечный.ПолноеИмя, "1Cv8.1CD"));
369+
Лог.Отладка("ФайлСервиснойИБ.ПолноеИмя " + ФайлСервиснойИБ.ПолноеИмя);
370+
Ожидаем.Что(ФайлСервиснойИБ.Существует(), "Должен существовать файл сервисной ИБ, а это не так").ЭтоИстина();
371+
372+
Каталог_v8Reader_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "v8Reader"));
373+
Файл_v8Reader_конечный = Новый Файл(ОбъединитьПути(Каталог_v8Reader_конечный.ПолноеИмя, "V8Reader.epf"));
374+
Ожидаем.Что(Файл_v8Reader_конечный.Существует(), "Должен существовать Файл_v8Reader_конечный, а это не так").ЭтоИстина();
375+
376+
Файл_pre_commit_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, "pre-commit"));
377+
Ожидаем.Что(Файл_pre_commit_конечный.Существует(), "Должен существовать Файл_pre_commit_конечный, а это не так").ЭтоИстина();
378+
379+
Лог.Отладка("Файл_pre_commit_конечный.ПолноеИмя " + Файл_pre_commit_конечный);
380+
Файл_сценария_исходный = Новый Файл(ОбъединитьПути(КаталогПроекта, "v8files-extractor.os"));
381+
Файл_сценария_конечный = Новый Файл(ОбъединитьПути(КаталогHooks.ПолноеИмя, Файл_сценария_исходный.Имя));
382+
Ожидаем.Что(Файл_сценария_конечный.Существует(), "Должен существовать Файл_сценария_конечный, а это не так").ЭтоИстина();
383+
384+
КонецПроцедуры
385+
352386
Функция КаталогСодержитИсходникиОбработки(Знач Каталог)
353387
ВыгруженныеФайлы = НайтиФайлы(Каталог, ПолучитьМаскуВсеФайлы());
354388
ИменаВыгруженныхФайлов = РазвернутьМассивФайловВИменаФайлов(ВыгруженныеФайлы);

v8files-extractor.os

Lines changed: 55 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,43 @@
297300

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

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

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

312352
КонецПроцедуры
313353

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

315367
Процедура ВывестиСправку()
316368
Сообщить("Утилита сборки/разборки внешних файлов 1С");
@@ -328,6 +380,8 @@
328380
Сообщить(" --compile inputPath outputPath [--recursive]");
329381
Сообщить(" Собрать внешний файл/обработку.");
330382
Сообщить(" Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога");
383+
Сообщить(" --install");
384+
Сообщить(" Установить precommit1c для текущего репозитория git");
331385
КонецПроцедуры
332386

333387

0 commit comments

Comments
 (0)