Skip to content

Commit 2fcbe4f

Browse files
committed
Merge branch 'release/2.0.5
2 parents 47fd458 + b0c9a73 commit 2fcbe4f

File tree

8 files changed

+114
-19
lines changed

8 files changed

+114
-19
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,5 @@ docs/_build/
6060

6161
# PyBuilder
6262
target/
63+
64+
*.ospx

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## Набор утилит для автоматической разборки/сборки внешних обработок и отчетов, при помещении (commit) в git
22

33
[![Join the chat at https://gitter.im/xDrivenDevelopment/precommit1c](https://badges.gitter.im/xDrivenDevelopment/precommit1c.svg)](https://gitter.im/xDrivenDevelopment/precommit1c?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Здесь вы можете задавать любые вопросы разработчикам и активным участникам
4+
[![GitHub release](https://img.shields.io/github/release/xDrivenDevelopment/precommit1c.svg)](https://github.com/xDrivenDevelopment/precommit1c/releases)
45

56
### Что к чему
67
----

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: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1-
mklink ".git/hooks/pre-commit" "%~dp0pre-commit"
2-
mklink ".git/hooks/v8files-extractor.os" "%~dp0v8files-extractor.os"
3-
mklink /J ".git/hooks/ibService" "%~dp0ibService"
1+
pushd .git
2+
md hooks
3+
popd
4+
5+
mklink /D /H ".git/hooks/pre-commit" "%~dp0pre-commit"
6+
mklink /D /H ".git/hooks/v8files-extractor.os" "%~dp0v8files-extractor.os"
47
mklink /J ".git/hooks/v8Reader" "%~dp0v8Reader"
58
mklink /J ".git/hooks/tools" "%~dp0tools"
69
git config --local core.quotepath false

ibService/1Cv8.1CD

-660 KB
Binary file not shown.

packagedef

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+

2+
Описание.Имя("precommit1c")
3+
.Версия("2.0.5")
4+
.ЗависитОт("logos")
5+
.ЗависитОт("cmdline")
6+
.ЗависитОт("tempfiles")
7+
.ЗависитОт("asserts")
8+
.ЗависитОт("v8runner")
9+
.ЗависитОт("strings")
10+
.ИсполняемыйФайл("v8files-extractor.os");
11+
12+
ФайлыКаталога = НайтиФайлы(ТекущийСценарий().Каталог, ПолучитьМаскуВсеФайлы());
13+
Для Каждого Файл Из ФайлыКаталога Цикл
14+
Если Лев(Файл.Имя,1) <> "." Тогда
15+
Описание.ВключитьФайл(Файл.Имя);
16+
КонецЕсли;
17+
КонецЦикла;

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: 60 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
Возврат мВозможныеКоманды;
@@ -74,6 +75,7 @@
7475
ДобавитьОписаниеКомандыПомощь(Парсер);
7576
ДобавитьОписаниеКомандыИзмененияПоЖурналуГит(Парсер);
7677
ДобавитьОписаниеКомандыКомпилировать(Парсер);
78+
ДобавитьОписаниеКомандыУстановить(Парсер);
7779

7880
Аргументы = Парсер.РазобратьКоманду(АргументыКоманднойСтроки);
7981
Лог.Отладка("ТипЗнч(Аргументы)= "+ТипЗнч(Аргументы));
@@ -100,6 +102,8 @@
100102
Аргументы.ЗначенияПараметров["ВыходнойКаталог"],
101103
Аргументы.ЗначенияПараметров["--recursive"]
102104
);
105+
ИначеЕсли Команда = ВозможныеКоманды().Установить Тогда
106+
УстановитьВКаталог(ТекущийКаталог());
103107
КонецЕсли;
104108

105109
Исключение
@@ -145,6 +149,11 @@
145149
Парсер.ДобавитьКоманду(ОписаниеКоманды);
146150
КонецПроцедуры
147151

152+
Процедура ДобавитьОписаниеКомандыУстановить(Знач Парсер)
153+
ОписаниеКоманды = Парсер.ОписаниеКоманды(ВозможныеКоманды().Установить);
154+
Парсер.ДобавитьКоманду(ОписаниеКоманды);
155+
КонецПроцедуры
156+
148157
Процедура Инициализация()
149158
СистемнаяИнформация = Новый СистемнаяИнформация;
150159
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
@@ -297,6 +306,42 @@
297306

298307
КонецПроцедуры
299308

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

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

312357
КонецПроцедуры
313358

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

315372
Процедура ВывестиСправку()
316373
Сообщить("Утилита сборки/разборки внешних файлов 1С");
@@ -328,6 +385,8 @@
328385
Сообщить(" --compile inputPath outputPath [--recursive]");
329386
Сообщить(" Собрать внешний файл/обработку.");
330387
Сообщить(" Если указан параметр --recursive, скрипт будет рекурсивно искать исходные коды отчетов и обработок в указанном каталоге и собирать их, повторяя структуру каталога");
388+
Сообщить(" --install");
389+
Сообщить(" Установить precommit1c для текущего репозитория git");
331390
КонецПроцедуры
332391

333392

0 commit comments

Comments
 (0)