mirror of
https://github.com/bia-technologies/precommit4onec.git
synced 2024-11-24 08:32:25 +02:00
Merge branch 'release/22.11'
This commit is contained in:
commit
425ff6855d
@ -10,7 +10,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.11"
|
||||
И Вывод команды "oscript" содержит "Установленные настройки:"
|
||||
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
|
||||
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
|
||||
@ -36,7 +36,7 @@
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v22.03
|
||||
precommit4onec v22.11
|
||||
Установленные настройки: Базовые настройки
|
||||
ИспользоватьСценарииРепозитория = Нет
|
||||
КаталогЛокальныхСценариев =
|
||||
|
@ -14,7 +14,7 @@
|
||||
Сценарий: Получение версии продукта
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
|
||||
Тогда Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "22.03"
|
||||
И Вывод команды "oscript" содержит "22.11"
|
||||
И Вывод команды "oscript" не содержит "precommit4onec v"
|
||||
И Код возврата команды "oscript" равен 0
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v22.03
|
||||
precommit4onec v22.11
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
@ -37,7 +37,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
|
||||
Тогда Вывод команды "oscript" содержит
|
||||
"""
|
||||
precommit4onec v22.03
|
||||
precommit4onec v22.11
|
||||
Возможные команды:
|
||||
help - Выводит справку по командам
|
||||
version - Выводит версию приложения
|
||||
|
@ -18,7 +18,7 @@
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install rep1"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.11"
|
||||
И Вывод команды "oscript" содержит "Pre-commit hook для rep1 создан"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
|
||||
@ -28,14 +28,14 @@
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.11"
|
||||
И Вывод команды "oscript" содержит "не является репозиторием git"
|
||||
|
||||
Сценарий: Установка precommit4onec во вложенные каталоги
|
||||
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.11"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
||||
@ -51,6 +51,6 @@
|
||||
И Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os install ./ -r"
|
||||
Тогда Код возврата команды "oscript" равен 0
|
||||
И Я сообщаю вывод команды "oscript"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.03"
|
||||
И Вывод команды "oscript" содержит "precommit4onec v22.11"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий1" есть файл "pre-commit"
|
||||
И В каталоге ".git/hooks" репозитория "Репозиторий2" есть файл "pre-commit"
|
||||
|
@ -18,6 +18,9 @@
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir", "Каталог расположения исходных файлов относительно корня репозитория. По умолчанию <src>");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-from-path", "Установить с учетом того, что скрипт прописан в path");
|
||||
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-r", "Устанавливает во вложенные каталоги. Если вложенный каталог не является репозиторием, то он пропускается.");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-ibconnection", "Расположение БД для выполнения операций");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-u", "Имя пользователя для соединения с базой");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-p", "Пароль пользователя");
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
@ -55,6 +58,32 @@
|
||||
КаталогИсходныхФайлов = "src";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыСоединенияСИБ = "";
|
||||
|
||||
РасположениеИБ = ПараметрыКоманды["-ibconnection"];
|
||||
Если ЗначениеЗаполнено(РасположениеИБ) Тогда
|
||||
|
||||
ПараметрыСоединенияСИБИмяПользователя = "";
|
||||
ПараметрыСоединенияСИБПарольПользователя = "";
|
||||
|
||||
ИмяПользователя = ПараметрыКоманды["-u"];
|
||||
|
||||
Если Не ПустаяСтрока(ИмяПользователя) Тогда
|
||||
|
||||
ПараметрыСоединенияСИБИмяПользователя = СтрШаблон(" -u ""%1""", ИмяПользователя);
|
||||
|
||||
ПарольПользователя = ПараметрыКоманды["-p"];
|
||||
|
||||
Если Не ПустаяСтрока(ПарольПользователя) Тогда
|
||||
ПараметрыСоединенияСИБПарольПользователя = СтрШаблон(" -p ""%1""", ПарольПользователя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыСоединенияСИБ = СтрШаблон(" -ibconnection ""%1""%2%3", РасположениеИБ, ПараметрыСоединенияСИБИмяПользователя, ПараметрыСоединенияСИБПарольПользователя);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КомандаЗапускаПриложения = Приложение.ИмяПродукта();
|
||||
Если НЕ ПараметрыКоманды["-from-path"] Тогда
|
||||
@ -62,7 +91,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
КомандаPrecommtHook = СтрШаблон("#!/bin/sh
|
||||
|%1 precommit ./ -source-dir ""%2""", КомандаЗапускаПриложения, КаталогИсходныхФайлов);
|
||||
|%1 precommit ./ -source-dir ""%2""%3", КомандаЗапускаПриложения, КаталогИсходныхФайлов, ПараметрыСоединенияСИБ);
|
||||
Лог.Отладка("Команда pre-commit hook %2`%1`", КомандаPrecommtHook, Символы.ПС);
|
||||
|
||||
Если ПараметрыКоманды["-r"] Тогда
|
||||
|
@ -19,7 +19,10 @@
|
||||
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогРепозитория", "Каталог анализируемого репозитория");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir",
|
||||
"Каталог расположения исходных файлов относительно корня репозитория. По умолчанию <src>");
|
||||
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-ibconnection", "Расположение БД для выполнения операций");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-u", "Имя пользователя для соединения с базой");
|
||||
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-p", "Пароль пользователя");
|
||||
|
||||
КонецПроцедуры // НастроитьКоманду
|
||||
|
||||
// Выполняет логику команды
|
||||
|
@ -1,3 +1,5 @@
|
||||
#Использовать logos
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Служебный модуль с набором служебных параметров приложения
|
||||
@ -22,7 +24,7 @@
|
||||
//
|
||||
Функция ВерсияПродукта() Экспорт
|
||||
|
||||
Возврат "22.03";
|
||||
Возврат "22.11";
|
||||
|
||||
КонецФункции // ВерсияПродукта
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
|
||||
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0 ИЛИ СтрСравнить(Файл.Расширение, ".os") = 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
||||
|
||||
СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);
|
||||
|
||||
ПаттернID = ?(EDT, "<id>([0-9-]+)<\/id>", "id=\""([0-9-]+)\""\/*>");
|
||||
ПаттернID = ?(EDT, "<id>([0-9]+)<\/id>", "id=\""([0-9]+)\""\/*>");
|
||||
|
||||
Регексп = Новый РегулярноеВыражение(ПаттернID);
|
||||
Регексп.ИгнорироватьРегистр = ИСТИНА;
|
||||
@ -100,6 +100,16 @@
|
||||
ТЧ.Сортировать("Значение УБЫВ");
|
||||
ПоследнийНомер = ТЧ[0].Значение;
|
||||
ТЧ.Сортировать("Количество УБЫВ");
|
||||
Если ТЧ[0].Количество = 1 Тогда
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
Иначе
|
||||
|
||||
СвободныеИдентификаторы = ВычислитьСвободныеИдентификаторы(ТЧ);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Для каждого СтрокаТЧ Из ТЧ Цикл
|
||||
|
||||
Если СтрокаТЧ.Количество = 1 Тогда
|
||||
@ -111,8 +121,8 @@
|
||||
Пока СтрокаТЧ.Количество > 1 Цикл
|
||||
|
||||
ИсходнаяСтрока = ?(EDT, "<id>" + СтрокаТЧ.Значение + "<", "id=""" + СтрокаТЧ.Значение + """");
|
||||
ПоследнийНомер = ПоследнийНомер + 1;
|
||||
СтрокаЗамены = ?(EDT, "<id>" + ПоследнийНомер + "<", "id=""" + ПоследнийНомер + """");
|
||||
СвободныйИдентификатор = ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер);
|
||||
СтрокаЗамены = ?(EDT, "<id>" + СвободныйИдентификатор + "<", "id=""" + СвободныйИдентификатор + """");
|
||||
|
||||
Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока);
|
||||
|
||||
@ -129,4 +139,33 @@
|
||||
|
||||
Возврат Истина;
|
||||
|
||||
КонецФункции
|
||||
КонецФункции
|
||||
|
||||
Функция ВычислитьСвободныеИдентификаторы(ТЧ)
|
||||
СписокЗначений = Новый СписокЗначений();
|
||||
СписокЗначений.ЗагрузитьЗначения(ТЧ.ВыгрузитьКолонку("Значение"));
|
||||
СписокЗначений.СортироватьПоЗначению();
|
||||
|
||||
СвободныеИдентификаторы = Новый Массив;
|
||||
Для Ит = 0 По СписокЗначений.Количество() - 2 Цикл
|
||||
Если СписокЗначений[Ит].Значение = СписокЗначений[Ит + 1].Значение Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Для Ид = СписокЗначений[Ит].Значение + 1 По СписокЗначений[Ит + 1].Значение - 1 Цикл
|
||||
СвободныеИдентификаторы.Добавить(Ид);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СвободныеИдентификаторы;
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер)
|
||||
Если СвободныеИдентификаторы.Количество() Тогда
|
||||
СвободныйИдентификатор = СвободныеИдентификаторы[0];
|
||||
СвободныеИдентификаторы.Удалить(0);
|
||||
Возврат СвободныйИдентификатор;
|
||||
Иначе
|
||||
ПоследнийНомер = ПоследнийНомер + 1;
|
||||
Возврат ПоследнийНомер;
|
||||
КонецЕсли;
|
||||
КонецФункции
|
||||
|
Loading…
Reference in New Issue
Block a user