diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..36edbad --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,16 @@ +name: Публикация релиза + +on: + release: + types: + - published + workflow_dispatch: + +jobs: + release: + uses: autumn-library/workflows/.github/workflows/release.yml@main + with: + oscript_version: '1.8.3' + package_mask: "gitrunner-*.ospx" + secrets: + PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }} diff --git "a/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\320\276\320\271\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" "b/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\320\276\320\271\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" index 4b1cfa7..c947bc0 100644 --- "a/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\320\276\320\271\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" +++ "b/features/step_definitions/\320\222\321\213\320\277\320\276\320\273\320\275\320\265\320\275\320\270\320\265\320\237\321\200\320\276\320\270\320\267\320\262\320\276\320\273\321\214\320\275\320\276\320\271\320\232\320\276\320\274\320\260\320\275\320\264\321\213.os" @@ -49,7 +49,7 @@ ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); ВыводКоманды = ГитРепозиторий.ПолучитьВыводКоманды(); - Ожидаем.Что(СокрЛП(ВыводКоманды)).Содержит(ОжидаемыйВыводКоманды); + Ожидаем.Что(ВыводКоманды).Содержит(ОжидаемыйВыводКоманды); КонецПроцедуры //Вывод команды не содержит "" @@ -57,7 +57,7 @@ ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); ВыводКоманды = ГитРепозиторий.ПолучитьВыводКоманды(); - Ожидаем.Что(СокрЛП(ВыводКоманды)).Не_().Содержит(ОжидаемыйВыводКоманды); + Ожидаем.Что(ВыводКоманды).Не_().Содержит(ОжидаемыйВыводКоманды); КонецПроцедуры //Я сообщаю вывод команды diff --git "a/features/step_definitions/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.os" "b/features/step_definitions/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.os" index 0890b69..72d43c4 100644 --- "a/features/step_definitions/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.os" +++ "b/features/step_definitions/\320\236\321\202\320\277\321\200\320\260\320\262\320\272\320\260\320\230\320\267\320\274\320\265\320\275\320\265\320\275\320\270\320\271.os" @@ -19,8 +19,6 @@ ВсеШаги.Добавить("ЯИнициализируюBareРепозиторийВоВременномКаталоге"); ВсеШаги.Добавить("ЯУстанавливаюНастройкуРежимаОтправки"); ВсеШаги.Добавить("ЯУстанавливаюРепозиторийОтправки"); - - ВсеШаги.Добавить("ВыводКомандыСодержит"); Возврат ВсеШаги; КонецФункции @@ -36,13 +34,6 @@ Процедура ПослеЗапускаСценария(Знач Узел) Экспорт КонецПроцедуры -//Вывод команды содержит "" -Процедура ВыводКомандыСодержит(Знач ОжидаемыйВыводКоманды) Экспорт - ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); - - ВыводКоманды = ГитРепозиторий.ПолучитьВыводКоманды(); - Ожидаем.Что(ВыводКоманды).Содержит(ОжидаемыйВыводКоманды); -КонецПроцедуры //Я сообщаю вывод команды Процедура ЯСообщаюВыводКоманды() Экспорт diff --git "a/features/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\321\217\320\274\320\270.os" "b/features/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\321\217\320\274\320\270.os" index a429cee..c16b59d 100644 --- "a/features/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\321\217\320\274\320\270.os" +++ "b/features/step_definitions/\320\240\320\260\320\261\320\276\321\202\320\260\320\241\320\222\320\275\320\265\321\210\320\275\320\270\320\274\320\270\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\321\217\320\274\320\270.os" @@ -14,7 +14,6 @@ ВсеШаги.Добавить("ЯПолучаюСписокВнешнихРепозиториев"); ВсеШаги.Добавить("СписокВнешнихРепозиториевСодержитСАдресом"); ВсеШаги.Добавить("ЯУдаляюВнешнийРепозиторий"); - ВсеШаги.Добавить("ВыводКомандыНеСодержит"); ВсеШаги.Добавить("ЯСохраняюЗначениеВременногоКаталогаВПеременной"); ВсеШаги.Добавить("ЯДобавляюВнешнийРепозиторийПоСохраненномуАдресуВнешнегоРепозитория"); @@ -39,14 +38,6 @@ ГитРепозиторий.УдалитьВнешнийРепозиторий(ИмяРепозитория); КонецПроцедуры -//Вывод команды не содержит "test" -Процедура ВыводКомандыНеСодержит(Знач ОжидаемыйВыводКоманды) Экспорт - ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); - - ВыводКоманды = ГитРепозиторий.ПолучитьВыводКоманды(); - Ожидаем.Что(ВыводКоманды).Не_().Содержит(ОжидаемыйВыводКоманды); -КонецПроцедуры - //Я добавляю внешний репозиторий "test" по адресу "http://fake.com" Процедура ЯДобавляюВнешнийРепозиторийПоАдресу(Знач ИмяРепозитория,Знач АдресРепозитория) Экспорт ГитРепозиторий = БДД.ПолучитьИзКонтекста("ГитРепозиторий"); diff --git a/packagedef b/packagedef index 24be5e4..a706e0a 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("gitrunner") - .Версия("1.7.0") + .Версия("1.7.1") .ЗависитОт("1bdd") .ВерсияСреды("1.7.0") .ЗависитОт("1commands", "1.3.1") diff --git "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" index c4946a8..fc62147 100644 --- "a/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" +++ "b/src/\320\223\320\270\321\202\320\240\320\265\320\277\320\276\320\267\320\270\321\202\320\276\321\200\320\270\320\271.os" @@ -99,7 +99,6 @@ Знач Коммитер = "", Знач ДатаКоммита = '00010101') Экспорт - НадоВосстановитьКоммитера = Ложь; НадоОчиститьУстановленныеПеременные = Ложь; НадоУдалитьВременныйФайлКомментария = Ложь; ИмяВременногоФайлаКомментария = ""; @@ -131,9 +130,7 @@ КонецЕсли; Если Не ПустаяСтрока(Коммитер) Тогда - - УстановитьКоммитера(Коммитер, НадоВосстановитьКоммитера); - + УстановитьКоммитера(Коммитер); КонецЕсли; Если ЗначениеЗаполнено(ДатаКоммита) Тогда @@ -161,10 +158,8 @@ Если НадоОчиститьУстановленныеПеременные Тогда ОчиститьУстановленныеПеременныеГит(); КонецЕсли; - Если НадоВосстановитьКоммитера Тогда - ВосстановитьКоммитера(); - КонецЕсли; - + ВосстановитьКоммитера(); + Если НадоУдалитьВременныйФайлКомментария Тогда Попытка УдалитьФайлы(ИмяВременногоФайлаКомментария); @@ -733,17 +728,17 @@ Функция ПолучитьНастройку(Знач ИмяНастройки, Знач РежимУстановкиНастроекGit = Неопределено) Экспорт ПараметрыЗапуска = Новый Массив; - ПараметрыЗапуска.Добавить("config"); - ПараметрыЗапуска.Добавить(ИмяНастройки); - + ПараметрыЗапуска.Добавить("config"); Если РежимУстановкиНастроекGit <> Неопределено Тогда ПараметрыЗапуска.Добавить(РежимУстановкиНастроекGit); КонецЕсли; - - ВыполнитьКоманду(ПараметрыЗапуска); + ПараметрыЗапуска.Добавить(ИмяНастройки); + // если настройка не установлена - возвращает код 1 + ВыполнитьКоманду(ПараметрыЗапуска, 1); + ВыводКоманды = СокрЛП(ПолучитьВыводКоманды()); Возврат ВыводКоманды; @@ -779,6 +774,34 @@ КонецПроцедуры +// Удалить настройку git +// git config --unset +// +// Параметры: +// ИмяНастройки - Строка - Имя настройки +// РежимУстановкиНастроекGit - РежимУстановкиНастроекGit - Режим установки настройки. +// Значения параметра содержатся в перечислении РежимУстановкиНастроекGit +// +Процедура УдалитьНастройку(Знач ИмяНастройки, Знач РежимУстановкиНастроекGit = Неопределено) Экспорт + + ПараметрыЗапуска = Новый Массив; + ПараметрыЗапуска.Добавить("config"); + + Если Найти(ИмяНастройки, " ") > 0 Тогда + ИмяНастройки = ОбернутьВКавычки(ИмяНастройки); + КонецЕсли; + + Если РежимУстановкиНастроекGit <> Неопределено Тогда + ПараметрыЗапуска.Добавить(РежимУстановкиНастроекGit); + КонецЕсли; + + ПараметрыЗапуска.Добавить("--unset"); + ПараметрыЗапуска.Добавить(ИмяНастройки); + + ВыполнитьКоманду(ПараметрыЗапуска); + +КонецПроцедуры + // Удаление секции настроек git // // Параметры: @@ -797,7 +820,8 @@ ПараметрыЗапуска.Добавить("--remove-section"); ПараметрыЗапуска.Добавить(ИмяСекции); - ВыполнитьКоманду(ПараметрыЗапуска); + // удаление несуществующей секции - код возврата 128 + ВыполнитьКоманду(ПараметрыЗапуска, 128); КонецПроцедуры @@ -860,7 +884,7 @@ // Параметры - Массив - Массив строковых аргументов, передаваемых в командную // строку. Добавляются после исполняемого файла. // -Процедура ВыполнитьКоманду(Знач Параметры) Экспорт +Процедура ВыполнитьКоманду(Знач Параметры, Знач ДопустимыйКодВозврата = 0) Экспорт ПроверитьВозможностьВыполненияКоманды(); @@ -884,7 +908,9 @@ УстановитьКодВозврата(КодВозврата); - Если КодВозврата <> 0 Тогда + Если КодВозврата <> 0 + И КодВозврата <> ДопустимыйКодВозврата Тогда + ВыводКоманды = ПолучитьВыводКоманды(); Если ТихийРежимРаботы Тогда Лог.Ошибка("Получен ненулевой код возврата %1. Сообщение: `%2`", КодВозврата, ВыводКоманды); @@ -893,7 +919,7 @@ ВызватьИсключение ВыводКоманды; КонецЕсли; Иначе - Лог.Отладка("Код возврата равен 0"); + Лог.Отладка("Код возврата равен %1", КодВозврата); КонецЕсли; КонецПроцедуры @@ -1076,9 +1102,8 @@ // // Параметры: // Коммитер - Строка - представление коммитера комментария в формате: автор -// ТребуетсяВосстановлениеНастроек - Булево - устанавливается в истина для последующего восстановления // -Процедура УстановитьКоммитера(Знач Коммитер, ТребуетсяВосстановлениеНастроек = Ложь) +Процедура УстановитьКоммитера(Знач Коммитер) РегуляркаДляПочты = Новый РегулярноеВыражение ("<([^>]+)>"); КоллекцияСовпадений = РегуляркаДляПочты.НайтиСовпадения(Коммитер); @@ -1096,16 +1121,11 @@ ТекущаяПочта = ПолучитьНастройку(НастройкаПочты, РежимУстановкиНастроекGit.Локально); // Сохранение в отдельную секцию "bak" - - ТребуетсяСохранениеВСекцию_bak = НЕ (ПустаяСтрока(ТекущееНаименование) И ПустаяСтрока(ТекущаяПочта)); - Если ТребуетсяСохранениеВСекцию_bak Тогда - - // Установка новых значений в секцию bak - УстановитьНастройку("bak."+ НастройкаНаименования, ТекущееНаименование); - УстановитьНастройку("bak."+ НастройкаПочты, ТекущаяПочта); - - ТребуетсяВосстановлениеНастроек = Истина; - + Если ЗначениеЗаполнено(ТекущееНаименование) Тогда + УстановитьНастройку("bak."+ НастройкаНаименования, ТекущееНаименование, РежимУстановкиНастроекGit.Локально); + КонецЕсли; + Если ЗначениеЗаполнено(ТекущаяПочта) Тогда + УстановитьНастройку("bak."+ НастройкаПочты, ТекущаяПочта, РежимУстановкиНастроекGit.Локально); КонецЕсли; // Установим новые значения @@ -1128,12 +1148,20 @@ Почта_bak = ПолучитьНастройку("bak."+ НастройкаПочты, РежимУстановкиНастроекGit.Локально); // Установим новые значения - Если ТекущееНаименование <> Наименование_bak Тогда - УстановитьНастройку(НастройкаНаименования, Наименование_bak, РежимУстановкиНастроекGit.Локально); + Если ТекущееНаименование <> Наименование_bak Тогда + Если ЗначениеЗаполнено(Наименование_bak) Тогда + УстановитьНастройку(НастройкаНаименования, Наименование_bak, РежимУстановкиНастроекGit.Локально); + Иначе + УдалитьНастройку(НастройкаНаименования, РежимУстановкиНастроекGit.Локально); + КонецЕсли; КонецЕсли; - Если ТекущаяПочта <> Почта_bak Тогда - УстановитьНастройку(НастройкаПочты, Почта_bak, РежимУстановкиНастроекGit.Локально); + Если ТекущаяПочта <> Почта_bak Тогда + Если ЗначениеЗаполнено(Почта_bak) Тогда + УстановитьНастройку(НастройкаПочты, Почта_bak, РежимУстановкиНастроекGit.Локально); + Иначе + УдалитьНастройку(НастройкаПочты, РежимУстановкиНастроекGit.Локально); + КонецЕсли; КонецЕсли; УдалитьСекциюНастроек("bak.user", РежимУстановкиНастроекGit.Локально);