diff --git a/packagedef b/packagedef index 43d012e..90706bd 100644 --- a/packagedef +++ b/packagedef @@ -22,7 +22,7 @@ КонецПроцедуры Описание.Имя("gitsync-plugins") - .Версия("1.3.0") + .Версия("1.4.0") .Автор("Khorev A.A. and SilverBulleters") .АдресАвтора("khorevaa@gmail.com,help@silverbulleters.org") .Описание("Набор предустановленных плагинов для gitsync") @@ -41,4 +41,5 @@ .ОпределяетКласс("Плагин_СнятияСПоддержки", "src/Классы/disableSupport.os") .ОпределяетКласс("Плагин_СинхронизацииСУдаленнымРепозиторием", "src/Классы/syncRemote.os") .ОпределяетКласс("Плагин_ВыгрузкаВФорматеEDT", "src/Классы/edtExport.os") + .ОпределяетКласс("Плагин_ЗаменаАвторов", "src/Классы/replaceAuthors.os") ; diff --git "a/src/\320\232\320\273\320\260\321\201\321\201\321\213/replaceAuthors.os" "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/replaceAuthors.os" new file mode 100644 index 0000000..99c043e --- /dev/null +++ "b/src/\320\232\320\273\320\260\321\201\321\201\321\213/replaceAuthors.os" @@ -0,0 +1,161 @@ +#Использовать logos + +Перем Лог; +Перем Обработчик; +Перем МеткаЗамены; +Перем АвторыДляДополнения; + +#Область Интерфейс_плагина + +// Возвращает версию плагина +// +// Возвращаемое значение: +// Строка - текущая версия плагина +// +Функция Версия() Экспорт + Возврат "1.0.0"; +КонецФункции + +// Возвращает приоритет выполнения плагина +// +// Возвращаемое значение: +// Число - приоритет выполнения плагина +// +Функция Приоритет() Экспорт + Возврат 0; +КонецФункции + +// Возвращает описание плагина +// Возвращает описание плагина +// +// Возвращаемое значение: +// Строка - описание функциональности плагина +// +Функция Описание() Экспорт + Возврат "Плагин добавляет функциональность замены автора коммита"; +КонецФункции + +// Возвращает подробную справку к плагину +// +// Возвращаемое значение: +// Строка - подробная справка для плагина +// +Функция Справка() Экспорт + + ТекстСправки = + "Плагин позволяет заменить автора коммита в git. + | + |Для замены необходимо при помещении версии хранилища добавить в комментарий к версии строку: + | + | --GitSyncAuthor НовыйАвтор + | + |НовыйАвтор должен быть указан в файле AUTHORS, наличие в хранилище не обязательно. + | + |При коммите изменений в git будет выполнена замена автора версии хранилища. + | + |Также будет удалена строка с командой замены из комментария коммита."; + + Возврат ТекстСправки; + +КонецФункции + +// Возвращает имя плагина +// +// Возвращаемое значение: +// Строка - имя плагина при подключении +// +Функция Имя() Экспорт + Возврат "replace-authors"; +КонецФункции + +// Возвращает имя лога плагина +// +// Возвращаемое значение: +// Строка - имя лога плагина +// +Функция ИмяЛога() Экспорт + Возврат "oscript.lib.gitsync.plugins.replace-authors"; +КонецФункции + +#КонецОбласти + +#Область Подписки_на_события + +Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт + + Лог = Логирование.ПолучитьЛог(ИмяЛога()); + + Лог.Отладка("Активизация плагина <%1>", Имя()); + Обработчик = СтандартныйОбработчик; + + МеткаЗамены = "--GitSyncAuthor "; + + АвторыДляДополнения = Новый Массив; + +КонецПроцедуры + +Процедура ПередНачаломВыполнения(ПутьКХранилищу, ВходящийКаталогРабочейКопии) Экспорт + + Лог.Отладка("Начата работа плагина <%1>", Имя()); + +КонецПроцедуры + +Процедура ПослеПолученияТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу) Экспорт + + Для Каждого СтрокаВерсии Из ТаблицаВерсий Цикл + + СтрокВКомментарии = СтрЧислоСтрок(СтрокаВерсии.Комментарий); + + Для Счетчик = 1 По СтрокВКомментарии Цикл + + СтрокаКомментария = СтрПолучитьСтроку(СтрокаВерсии.Комментарий, Счетчик); + + НужноЗаменитьАвтора = СтрНайти(СтрокаКомментария, МеткаЗамены) > 0; + + Если НужноЗаменитьАвтора Тогда + + НовыйАвтор = СтрЗаменить(СтрокаКомментария, МеткаЗамены, ""); + НовыйАвтор = СокрЛП(НовыйАвтор); + + СтарыйАвтор = СтрокаВерсии.Автор; + + СтрокаВерсии.Автор = НовыйАвтор; + СтрокаВерсии.ГУИД_Автора = НовыйАвтор; + + СтрокаВерсии.Комментарий = СтрЗаменить(СтрокаВерсии.Комментарий, СтрокаКомментария, ""); + + Лог.Информация( + "Для версии хранилища <%1> заменен автор с <%2> на <%3>", + СтрокаВерсии.НомерВерсии, + СтарыйАвтор, + НовыйАвтор); + + АвторыДляДополнения.Добавить(НовыйАвтор); + + КонецЕсли; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +Процедура ПослеПолученияТаблицыПользователей(ТаблицаПользователей, ПутьКХранилищу) Экспорт + + Для каждого Автор Из АвторыДляДополнения Цикл + + НужноДобавитьВТаблицуПользователей = ТаблицаПользователей.Найти(Автор, "ГУИД_Автора") = Неопределено; + + Если НужноДобавитьВТаблицуПользователей Тогда + + НовыйПользователь = ТаблицаПользователей.Добавить(); + НовыйПользователь.Автор = Автор; + НовыйПользователь.ГУИД_Автора = Автор; + + КонецЕсли; + + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти