1
0
mirror of https://github.com/bia-technologies/precommit4onec.git synced 2025-05-13 21:56:37 +02:00

Merge branch 'feature/ORAIS-1538' into 'develop'

ORAIS-1538: Исправить ошибку в тестах для сценария распаковки файлов.

Closes ORAIS-1538

See merge request orais/precommit1C-fork-bia!72
This commit is contained in:
Максимов Валерий Валерьевич (000044217) 2024-11-18 20:48:56 +03:00
commit 14bbcaed53
3 changed files with 14 additions and 35 deletions

View File

@ -29,6 +29,8 @@
- для выполнения установки в конкретный репозиторий необходимо выполнить команду `precommit4onec install repo_name` - для выполнения установки в конкретный репозиторий необходимо выполнить команду `precommit4onec install repo_name`
- для выполнения установки во все репозитории каталога необходимо выполнить команду `precommit4onec install folder_reps -r` - для выполнения установки во все репозитории каталога необходимо выполнить команду `precommit4onec install folder_reps -r`
- если каталог исходных файлов в репозитории отличается от стандартного "src" (например, когда исходные файлы в формате EDT), необходимо явно указать его с помощью дополнительного параметра `-source-dir "configuration"` - если каталог исходных файлов в репозитории отличается от стандартного "src" (например, когда исходные файлы в формате EDT), необходимо явно указать его с помощью дополнительного параметра `-source-dir "configuration"`
Для корректного отображения путей с кириллицей прекоммит установит настройку Git `core.quotePath` для локального репозитория.
После этого, при каждом коммите будет выполняться обработка файлов. После этого, при каждом коммите будет выполняться обработка файлов.

View File

@ -34,55 +34,38 @@
Лог = Приложение.ПолучитьЛог(); Лог = Приложение.ПолучитьЛог();
КаталогРепозитория = ПараметрыКоманды["КаталогРепозитория"]; КаталогРепозитория = ПараметрыКоманды["КаталогРепозитория"];
Если НЕ ЗначениеЗаполнено(КаталогРепозитория) Тогда Если НЕ ЗначениеЗаполнено(КаталогРепозитория) Тогда
Лог.Ошибка("Для установки прекоммита надо указать каталог"); Лог.Ошибка("Для установки прекоммита надо указать каталог");
Возврат Приложение.РезультатыКоманд().НеверныеПараметры; Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
КонецЕсли; КонецЕсли;
ФайлКаталогРепозитория = Новый Файл(КаталогРепозитория); ФайлКаталогРепозитория = Новый Файл(КаталогРепозитория);
Если НЕ ФайлКаталогРепозитория.Существует() ИЛИ ФайлКаталогРепозитория.ЭтоФайл() Тогда Если НЕ ФайлКаталогРепозитория.Существует() ИЛИ ФайлКаталогРепозитория.ЭтоФайл() Тогда
Лог.Ошибка("Каталог репозитория '%1' не существует или это файл", КаталогРепозитория); Лог.Ошибка("Каталог репозитория '%1' не существует или это файл", КаталогРепозитория);
Возврат Приложение.РезультатыКоманд().НеверныеПараметры; Возврат Приложение.РезультатыКоманд().НеверныеПараметры;
КонецЕсли; КонецЕсли;
КаталогИсходныхФайлов = ПараметрыКоманды["-source-dir"]; КаталогИсходныхФайлов = ПараметрыКоманды["-source-dir"];
Если Не ЗначениеЗаполнено(КаталогИсходныхФайлов) Тогда Если Не ЗначениеЗаполнено(КаталогИсходныхФайлов) Тогда
КаталогИсходныхФайлов = "src"; КаталогИсходныхФайлов = "src";
КонецЕсли; КонецЕсли;
ПараметрыСоединенияСИБ = ""; ПараметрыСоединенияСИБ = "";
РасположениеИБ = ПараметрыКоманды["-ibconnection"]; РасположениеИБ = ПараметрыКоманды["-ibconnection"];
Если ЗначениеЗаполнено(РасположениеИБ) Тогда Если ЗначениеЗаполнено(РасположениеИБ) Тогда
ПараметрыСоединенияСИБИмяПользователя = ""; ПараметрыСоединенияСИБИмяПользователя = "";
ПараметрыСоединенияСИБПарольПользователя = ""; ПараметрыСоединенияСИБПарольПользователя = "";
ИмяПользователя = ПараметрыКоманды["-u"]; ИмяПользователя = ПараметрыКоманды["-u"];
Если Не ПустаяСтрока(ИмяПользователя) Тогда Если Не ПустаяСтрока(ИмяПользователя) Тогда
ПараметрыСоединенияСИБИмяПользователя = СтрШаблон(" -u ""%1""", ИмяПользователя); ПараметрыСоединенияСИБИмяПользователя = СтрШаблон(" -u ""%1""", ИмяПользователя);
ПарольПользователя = ПараметрыКоманды["-p"]; ПарольПользователя = ПараметрыКоманды["-p"];
Если Не ПустаяСтрока(ПарольПользователя) Тогда Если Не ПустаяСтрока(ПарольПользователя) Тогда
ПараметрыСоединенияСИБПарольПользователя = СтрШаблон(" -p ""%1""", ПарольПользователя); ПараметрыСоединенияСИБПарольПользователя = СтрШаблон(" -p ""%1""", ПарольПользователя);
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
ПараметрыСоединенияСИБ = СтрШаблон(" -ibconnection ""%1""%2%3", РасположениеИБ, ПараметрыСоединенияСИБИмяПользователя, ПараметрыСоединенияСИБПарольПользователя); ПараметрыСоединенияСИБ = СтрШаблон(" -ibconnection ""%1""%2%3", РасположениеИБ, ПараметрыСоединенияСИБИмяПользователя, ПараметрыСоединенияСИБПарольПользователя);
КонецЕсли; КонецЕсли;
КомандаЗапускаПриложения = Приложение.ИмяПродукта(); КомандаЗапускаПриложения = Приложение.ИмяПродукта();
@ -91,29 +74,21 @@
КонецЕсли; КонецЕсли;
КомандаPrecommtHook = СтрШаблон("#!/bin/sh КомандаPrecommtHook = СтрШаблон("#!/bin/sh
|%1 precommit ./ -source-dir ""%2""%3", КомандаЗапускаПриложения, КаталогИсходныхФайлов, ПараметрыСоединенияСИБ); |%1 precommit ./ -source-dir ""%2""%3", КомандаЗапускаПриложения, КаталогИсходныхФайлов, ПараметрыСоединенияСИБ);
Лог.Отладка("Команда pre-commit hook %2`%1`", КомандаPrecommtHook, Символы.ПС); Лог.Отладка("Команда pre-commit hook %2`%1`", КомандаPrecommtHook, Символы.ПС);
Если ПараметрыКоманды["-r"] Тогда Если ПараметрыКоманды["-r"] Тогда
// установка во вложенные каталоги // установка во вложенные каталоги
Каталоги = НайтиФайлы(КаталогРепозитория, "*"); Каталоги = НайтиФайлы(КаталогРепозитория, "*");
Для Каждого Каталог Из Каталоги Цикл Для Каждого Каталог Из Каталоги Цикл
Если НЕ Каталог.ЭтоКаталог() Тогда Если НЕ Каталог.ЭтоКаталог() Тогда
Продолжить; Продолжить;
КонецЕсли; КонецЕсли;
УстановитьПрекоммитВКаталогРепозитория(Каталог.ПолноеИмя, КомандаPrecommtHook); УстановитьПрекоммитВКаталогРепозитория(Каталог.ПолноеИмя, КомандаPrecommtHook);
КонецЦикла;
КонецЦикла
Иначе Иначе
УстановитьПрекоммитВКаталогРепозитория(КаталогРепозитория, КомандаPrecommtHook); УстановитьПрекоммитВКаталогРепозитория(КаталогРепозитория, КомандаPrecommtHook);
КонецЕсли; КонецЕсли;
// При успешном выполнении возвращает код успеха // При успешном выполнении возвращает код успеха
@ -128,12 +103,13 @@
// проверка каталога // проверка каталога
Если НЕ РепозиторийGit.ЭтоРепозиторий() Тогда Если НЕ РепозиторийGit.ЭтоРепозиторий() Тогда
Лог.Информация("Каталог '%1' не является репозиторием git", КаталогРепозитория); Лог.Информация("Каталог '%1' не является репозиторием git", КаталогРепозитория);
Возврат; Возврат;
КонецЕсли; КонецЕсли;
РепозиторийGit.УстановитьНастройку("core.quotePath", "false", РежимУстановкиНастроекGit.Локально); // решение проблемы с кириллическими путями
// локальная настройка Git для корректного отображения кириллических путей
РепозиторийGit.УстановитьНастройку("core.quotePath", "false", РежимУстановкиНастроекGit.Локально);
// установка // установка
КаталогGitHook = ОбъединитьПути(КаталогРепозитория, ".git", "hooks"); КаталогGitHook = ОбъединитьПути(КаталогРепозитория, ".git", "hooks");
ФайлКаталогGitHook = Новый Файл(КаталогGitHook); ФайлКаталогGitHook = Новый Файл(КаталогGitHook);
@ -152,9 +128,7 @@
ЭтоWindows = Найти(НРег(СисИнфо.ВерсияОС), "windows") > 0; ЭтоWindows = Найти(НРег(СисИнфо.ВерсияОС), "windows") > 0;
Если НЕ ЭтоWindows Тогда Если НЕ ЭтоWindows Тогда
ЗапуститьПриложение(СтрШаблон("chmod +x ""%1""", ФайлPrecommtHook)); ЗапуститьПриложение(СтрШаблон("chmod +x ""%1""", ФайлPrecommtHook));
КонецЕсли; КонецЕсли;
Лог.Информация("Pre-commit hook для %1 создан", КаталогРепозитория); Лог.Информация("Pre-commit hook для %1 создан", КаталогРепозитория);

View File

@ -20,27 +20,30 @@
// По файлу определеяет тип сорируемого объекта и некоторые дополнительные данные // По файлу определеяет тип сорируемого объекта и некоторые дополнительные данные
Функция ПоФайлу(АнализируемыйФайл) Экспорт Функция ПоФайлу(АнализируемыйФайл) Экспорт
Описание = Новый Структура("Тип, Заимствованный, ЕДТ", Неизвестный, Ложь, Ложь); Описание = Новый Структура("Тип, Заимствованный, ЕДТ", Неизвестный, Ложь, Ложь);
Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл);
ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл); ЭтоЕДТ = ТипыФайлов.ЭтоФайлОписанияКонфигурацииEDT(АнализируемыйФайл);
Если ЭтоЕДТ Или ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда Если ЭтоЕДТ Или ТипыФайлов.ЭтоФайлОписанияКонфигурации(АнализируемыйФайл) Тогда
Описание.Тип = Конфигурация; Описание.Тип = Конфигурация;
Описание.ЕДТ = ЭтоЕДТ; Описание.ЕДТ = ЭтоЕДТ;
Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл);
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипа(АнализируемыйФайл) Тогда ИначеЕсли ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипа(АнализируемыйФайл) Тогда
Описание.Тип = ОпределяемыйТип; Описание.Тип = ОпределяемыйТип;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипаEDT(АнализируемыйФайл); Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияОпределяемогоТипаEDT(АнализируемыйФайл);
Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл);
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПланаОбмена(АнализируемыйФайл) Тогда ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПланаОбмена(АнализируемыйФайл) Тогда
Описание.Тип = ПланОбмена; Описание.Тип = ПланОбмена;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПланаОбменаEDT(АнализируемыйФайл); Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПланаОбменаEDT(АнализируемыйФайл);
Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл);
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияФункциональнойОпции(АнализируемыйФайл) Тогда ИначеЕсли ТипыФайлов.ЭтоФайлОписанияФункциональнойОпции(АнализируемыйФайл) Тогда
Описание.Тип = ФункциональнаяОпция; Описание.Тип = ФункциональнаяОпция;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияФункциональнойОпцииEDT(АнализируемыйФайл); Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияФункциональнойОпцииEDT(АнализируемыйФайл);
Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл);
ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) Тогда ИначеЕсли ТипыФайлов.ЭтоФайлОписанияПодсистемы(АнализируемыйФайл) Тогда
Описание.Тип = Подсистема; Описание.Тип = Подсистема;
Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл); Описание.ЕДТ = ТипыФайлов.ЭтоФайлОписанияПодсистемыEDT(АнализируемыйФайл);
Описание.Заимствованный = ТипыФайлов.ЭтоФайлЗаимствованногоОбъектаРасширения(АнализируемыйФайл);
КонецЕсли; КонецЕсли;
Возврат Описание; Возврат Описание;
КонецФункции КонецФункции
Конфигурация = "Конфигурация"; Конфигурация = "Конфигурация";