diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/smart-tags.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/smart-tags.os" index 820e51a..7348cea 100644 --- "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/smart-tags.os" +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/smart-tags.os" @@ -3,6 +3,8 @@ Перем ВерсияПлагина; Перем Лог; Перем Обработчик; +Перем КомандыПлагина; +Перем ПропускатьСуществующиеТеги; Перем ПоследняяВерсияКонфигурации; Перем ТекущаяВерсияКонфигурации; @@ -20,6 +22,29 @@ КонецПроцедуры +Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации, Парсер) Экспорт + + Лог.Отладка("Ищю команду <%1> в списке поддерживаемых", ИмяКоманды); + Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда + Возврат; + КонецЕсли; + + Лог.Отладка("Устанавливаю дополнительные параметры для команды %1", ИмяКоманды); + + ПропускатьСуществующиеТеги = КлассРеализации.Опция("S skip-exists-tags", Ложь, "[*skip-exists-tags] флаг пропуска ошибок создания существующих тегов").Флаговый(); + +КонецПроцедуры + +Процедура ПриПолученииПараметров(ПараметрыКоманды, ДополнительныеПараметры) Экспорт + + ПропускатьСуществующиеТеги = ПараметрыКоманды["--skip-exists-tags"]; + + Если ПропускатьСуществующиеТеги = Неопределено Тогда + ПропускатьСуществующиеТеги = Ложь; + КонецЕсли; + +КонецПроцедуры + Процедура ПередНачаломВыполнения(ПутьКХранилищу, КаталогРабочейКопии, URLРепозитория, ИмяВетки) Экспорт ПоследняяВерсияКонфигурации = ПрочитатьВерсиюИзИсходников(КаталогРабочейКопии); @@ -48,7 +73,18 @@ ПараметрыКоманды.Добавить("tag"); ПараметрыКоманды.Добавить(Строка(ТекущаяВерсияКонфигурации)); - ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + Попытка + ГитРепозиторий.ВыполнитьКоманду(ПараметрыКоманды); + Исключение + ТекстОшибки = ОписаниеОшибки(); + Если ПропускатьСуществующиеТеги + И ЭтоОшибкаТегУжеСуществует(ТекстОшибки, ТекущаяВерсияКонфигурации) Тогда + Лог.Ошибка(ТекстОшибки); + Иначе + ВызватьИсключение ТекстОшибки; + КонецЕсли; + КонецПопытки; + ПоследняяВерсияКонфигурации = ТекущаяВерсияКонфигурации; КонецЕсли; @@ -68,6 +104,14 @@ КонецФункции // ПрочитатьВерсиюИзИсходников() +Функция ЭтоОшибкаТегУжеСуществует(ТекстОшибки, ТекущаяВерсияКонфигурации) + + Возврат СтрНайти( + ТекстОшибки, + СтрШаблон("fatal: tag '%1' already exists", ТекущаяВерсияКонфигурации)) > 0; + +КонецФункции + // Функция читает параметры конфигурации из каталога исходников // Функция ПолучитьПараметрыКонфигурацииИзИсходников(КаталогИсходныхФайлов)