Skip to content

release 1.4.0 #51

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jun 7, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
КонецПроцедуры

Описание.Имя("gitsync-plugins")
.Версия("1.3.0")
.Версия("1.4.0")
.Автор("Khorev A.A. and SilverBulleters")
.АдресАвтора("[email protected],[email protected]")
.Описание("Набор предустановленных плагинов для gitsync")
Expand All @@ -41,4 +41,5 @@
.ОпределяетКласс("Плагин_СнятияСПоддержки", "src/Классы/disableSupport.os")
.ОпределяетКласс("Плагин_СинхронизацииСУдаленнымРепозиторием", "src/Классы/syncRemote.os")
.ОпределяетКласс("Плагин_ВыгрузкаВФорматеEDT", "src/Классы/edtExport.os")
.ОпределяетКласс("Плагин_ЗаменаАвторов", "src/Классы/replaceAuthors.os")
;
161 changes: 161 additions & 0 deletions src/Классы/replaceAuthors.os
Original file line number Diff line number Diff line change
@@ -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>",
СтрокаВерсии.НомерВерсии,
СтарыйАвтор,
НовыйАвтор);

АвторыДляДополнения.Добавить(НовыйАвтор);

КонецЕсли;

КонецЦикла;

КонецЦикла;

КонецПроцедуры

Процедура ПослеПолученияТаблицыПользователей(ТаблицаПользователей, ПутьКХранилищу) Экспорт

Для каждого Автор Из АвторыДляДополнения Цикл

НужноДобавитьВТаблицуПользователей = ТаблицаПользователей.Найти(Автор, "ГУИД_Автора") = Неопределено;

Если НужноДобавитьВТаблицуПользователей Тогда

НовыйПользователь = ТаблицаПользователей.Добавить();
НовыйПользователь.Автор = Автор;
НовыйПользователь.ГУИД_Автора = Автор;

КонецЕсли;

КонецЦикла;

КонецПроцедуры

#КонецОбласти