Skip to content

Commit

Permalink
Merge branch 'release/22.11'
Browse files Browse the repository at this point in the history
  • Loading branch information
theshadowco committed Nov 26, 2022
2 parents 9ab4cd8 + 2f1e030 commit 425ff68
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 17 deletions.
4 changes: 2 additions & 2 deletions features/Конфигурирование.feature
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Когда Я выполняю команду "oscript" с параметрами "<КаталогПроекта>/src/main.os configure -global"
Тогда Код возврата команды "oscript" равен 0
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "precommit4onec v22.03"
И Вывод команды "oscript" содержит "precommit4onec v22.11"
И Вывод команды "oscript" содержит "Установленные настройки:"
И Вывод команды "oscript" содержит "ИспользоватьСценарииРепозитория ="
И Вывод команды "oscript" содержит "КаталогЛокальныхСценариев ="
Expand All @@ -36,7 +36,7 @@
И Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит
"""
precommit4onec v22.03
precommit4onec v22.11
Установленные настройки: Базовые настройки
ИспользоватьСценарииРепозитория = Нет
КаталогЛокальныхСценариев =
Expand Down
6 changes: 3 additions & 3 deletions features/ПростыеКоманды.feature
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@
Сценарий: Получение версии продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os version"
Тогда Я сообщаю вывод команды "oscript"
И Вывод команды "oscript" содержит "22.03"
И Вывод команды "oscript" содержит "22.11"
И Вывод команды "oscript" не содержит "precommit4onec v"
И Код возврата команды "oscript" равен 0

Сценарий: Получение помощи продукта
Когда Я выполняю команду "oscript" с параметрами "src/main.os help"
Тогда Вывод команды "oscript" содержит
"""
precommit4onec v22.03
precommit4onec v22.11
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
Expand All @@ -37,7 +37,7 @@
Когда Я выполняю команду "oscript" с параметрами "src/main.os"
Тогда Вывод команды "oscript" содержит
"""
precommit4onec v22.03
precommit4onec v22.11
Возможные команды:
help - Выводит справку по командам
version - Выводит версию приложения
Expand Down
8 changes: 4 additions & 4 deletions features/УстановкаПрекоммита.feature
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand All @@ -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"

Expand All @@ -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"
31 changes: 30 additions & 1 deletion src/Классы/КомандаИнсталл.os
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir", "Каталог расположения исходных файлов относительно корня репозитория. По умолчанию <src>");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-from-path", "Установить с учетом того, что скрипт прописан в path");
Парсер.ДобавитьПараметрФлагКоманды(Команда, "-r", "Устанавливает во вложенные каталоги. Если вложенный каталог не является репозиторием, то он пропускается.");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-ibconnection", "Расположение БД для выполнения операций");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-u", "Имя пользователя для соединения с базой");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-p", "Пароль пользователя");

КонецПроцедуры // НастроитьКоманду

Expand Down Expand Up @@ -55,14 +58,40 @@
КаталогИсходныхФайлов = "src";

КонецЕсли;

ПараметрыСоединенияСИБ = "";

РасположениеИБ = ПараметрыКоманды["-ibconnection"];
Если ЗначениеЗаполнено(РасположениеИБ) Тогда

ПараметрыСоединенияСИБИмяПользователя = "";
ПараметрыСоединенияСИБПарольПользователя = "";

ИмяПользователя = ПараметрыКоманды["-u"];

Если Не ПустаяСтрока(ИмяПользователя) Тогда

ПараметрыСоединенияСИБИмяПользователя = СтрШаблон(" -u ""%1""", ИмяПользователя);

ПарольПользователя = ПараметрыКоманды["-p"];

Если Не ПустаяСтрока(ПарольПользователя) Тогда
ПараметрыСоединенияСИБПарольПользователя = СтрШаблон(" -p ""%1""", ПарольПользователя);
КонецЕсли;

КонецЕсли;

ПараметрыСоединенияСИБ = СтрШаблон(" -ibconnection ""%1""%2%3", РасположениеИБ, ПараметрыСоединенияСИБИмяПользователя, ПараметрыСоединенияСИБПарольПользователя);

КонецЕсли;

КомандаЗапускаПриложения = Приложение.ИмяПродукта();
Если НЕ ПараметрыКоманды["-from-path"] Тогда
КомандаЗапускаПриложения = СтрШаблон("oscript -encoding=utf-8 ""%1""", Приложение.ПутьКИсполняемомуФайлу());
КонецЕсли;

КомандаPrecommtHook = СтрШаблон("#!/bin/sh
|%1 precommit ./ -source-dir ""%2""", КомандаЗапускаПриложения, КаталогИсходныхФайлов);
|%1 precommit ./ -source-dir ""%2""%3", КомандаЗапускаПриложения, КаталогИсходныхФайлов, ПараметрыСоединенияСИБ);
Лог.Отладка("Команда pre-commit hook %2`%1`", КомандаPrecommtHook, Символы.ПС);

Если ПараметрыКоманды["-r"] Тогда
Expand Down
5 changes: 4 additions & 1 deletion src/Классы/КомандаПрекоммит.os
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,10 @@
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "КаталогРепозитория", "Каталог анализируемого репозитория");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-source-dir",
"Каталог расположения исходных файлов относительно корня репозитория. По умолчанию <src>");

Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-ibconnection", "Расположение БД для выполнения операций");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-u", "Имя пользователя для соединения с базой");
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, "-p", "Пароль пользователя");

КонецПроцедуры // НастроитьКоманду

// Выполняет логику команды
Expand Down
4 changes: 3 additions & 1 deletion src/Модули/ПараметрыПриложения.os
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#Использовать logos

///////////////////////////////////////////////////////////////////////////////
//
// Служебный модуль с набором служебных параметров приложения
Expand All @@ -22,7 +24,7 @@
//
Функция ВерсияПродукта() Экспорт

Возврат "22.03";
Возврат "22.11";

КонецФункции // ВерсияПродукта

Expand Down
2 changes: 1 addition & 1 deletion src/Модули/ТипыФайлов.os
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@

КонецЕсли;

Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0;
Возврат СтрСравнить(Файл.Расширение, ".bsl") = 0 ИЛИ СтрСравнить(Файл.Расширение, ".os") = 0;

КонецФункции

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@

СодержимоеФайла = ФайловыеОперации.ПрочитатьТекстФайла(ИмяФайла);

ПаттернID = ?(EDT, "<id>([0-9-]+)<\/id>", "id=\""([0-9-]+)\""\/*>");
ПаттернID = ?(EDT, "<id>([0-9]+)<\/id>", "id=\""([0-9]+)\""\/*>");

Регексп = Новый РегулярноеВыражение(ПаттернID);
Регексп.ИгнорироватьРегистр = ИСТИНА;
Expand Down Expand Up @@ -100,6 +100,16 @@
ТЧ.Сортировать("Значение УБЫВ");
ПоследнийНомер = ТЧ[0].Значение;
ТЧ.Сортировать("Количество УБЫВ");
Если ТЧ[0].Количество = 1 Тогда

Возврат Истина;

Иначе

СвободныеИдентификаторы = ВычислитьСвободныеИдентификаторы(ТЧ);

КонецЕсли;

Для каждого СтрокаТЧ Из ТЧ Цикл

Если СтрокаТЧ.Количество = 1 Тогда
Expand All @@ -111,8 +121,8 @@
Пока СтрокаТЧ.Количество > 1 Цикл

ИсходнаяСтрока = ?(EDT, "<id>" + СтрокаТЧ.Значение + "<", "id=""" + СтрокаТЧ.Значение + """");
ПоследнийНомер = ПоследнийНомер + 1;
СтрокаЗамены = ?(EDT, "<id>" + ПоследнийНомер + "<", "id=""" + ПоследнийНомер + """");
СвободныйИдентификатор = ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер);
СтрокаЗамены = ?(EDT, "<id>" + СвободныйИдентификатор + "<", "id=""" + СвободныйИдентификатор + """");

Поз = СтрНайти(СодержимоеФайла, ИсходнаяСтрока);

Expand All @@ -129,4 +139,33 @@

Возврат Истина;

КонецФункции
КонецФункции

Функция ВычислитьСвободныеИдентификаторы(ТЧ)
СписокЗначений = Новый СписокЗначений();
СписокЗначений.ЗагрузитьЗначения(ТЧ.ВыгрузитьКолонку("Значение"));
СписокЗначений.СортироватьПоЗначению();

СвободныеИдентификаторы = Новый Массив;
Для Ит = 0 По СписокЗначений.Количество() - 2 Цикл
Если СписокЗначений[Ит].Значение = СписокЗначений[Ит + 1].Значение Тогда
Продолжить;
КонецЕсли;
Для Ид = СписокЗначений[Ит].Значение + 1 По СписокЗначений[Ит + 1].Значение - 1 Цикл
СвободныеИдентификаторы.Добавить(Ид);
КонецЦикла;
КонецЦикла;

Возврат СвободныеИдентификаторы;
КонецФункции

Функция ПолучитьСвободныйИдентификатор(СвободныеИдентификаторы, ПоследнийНомер)
Если СвободныеИдентификаторы.Количество() Тогда
СвободныйИдентификатор = СвободныеИдентификаторы[0];
СвободныеИдентификаторы.Удалить(0);
Возврат СвободныйИдентификатор;
Иначе
ПоследнийНомер = ПоследнийНомер + 1;
Возврат ПоследнийНомер;
КонецЕсли;
КонецФункции

0 comments on commit 425ff68

Please sign in to comment.