Skip to content

Commit 304f17f

Browse files
committed
#20 Добавлен плагин замены автора коммита
1 parent f9200cc commit 304f17f

File tree

2 files changed

+156
-0
lines changed

2 files changed

+156
-0
lines changed

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,5 @@
4545
.ОпределяетКласс("Плагин_РаспаковкиОбычныхФорм", "src/Классы/unpackForm.os")
4646
.ОпределяетКласс("Плагин_СнятияСПоддержки", "src/Классы/disableSupport.os")
4747
.ОпределяетКласс("Плагин_СинхронизацииСУдаленнымРепозиторием", "src/Классы/syncRemote.os")
48+
.ОпределяетКласс("Плагин_ЗаменаАвторов", "src/Классы/replaceAuthors.os")
4849
;

src/Классы/replaceAuthors.os

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
#Использовать logos
2+
3+
Перем Лог;
4+
Перем Обработчик;
5+
Перем МеткаЗамены;
6+
7+
#Область Интерфейс_плагина
8+
9+
// Возвращает версию плагина
10+
//
11+
// Возвращаемое значение:
12+
// Строка - текущая версия плагина
13+
//
14+
Функция Версия() Экспорт
15+
Возврат "1.0.0";
16+
КонецФункции
17+
18+
// Возвращает приоритет выполнения плагина
19+
//
20+
// Возвращаемое значение:
21+
// Число - приоритет выполнения плагина
22+
//
23+
Функция Приоритет() Экспорт
24+
Возврат 0;
25+
КонецФункции
26+
27+
// Возвращает описание плагина
28+
// Возвращает описание плагина
29+
//
30+
// Возвращаемое значение:
31+
// Строка - описание функциональности плагина
32+
//
33+
Функция Описание() Экспорт
34+
Возврат "Плагин добавляет функциональность замены автора коммита";
35+
КонецФункции
36+
37+
// Возвращает подробную справку к плагину
38+
//
39+
// Возвращаемое значение:
40+
// Строка - подробная справка для плагина
41+
//
42+
Функция Справка() Экспорт
43+
44+
ТекстСправки =
45+
"Плагин позволяет заменить автора коммита в git.
46+
|
47+
|Для замены необходимо при помещении версии хранилища добавить в комментарий к версии строку:
48+
|
49+
| --GitSyncAuthor ПользователяХранилища
50+
|
51+
|При коммите изменений в git будет выполнена замена автора версии хранилища.
52+
|
53+
|Также будет удалена строка с командой замены из комментария коммита.";
54+
55+
Возврат ТекстСправки;
56+
57+
КонецФункции
58+
59+
// Возвращает имя плагина
60+
//
61+
// Возвращаемое значение:
62+
// Строка - имя плагина при подключении
63+
//
64+
Функция Имя() Экспорт
65+
Возврат "replace-authors";
66+
КонецФункции
67+
68+
// Возвращает имя лога плагина
69+
//
70+
// Возвращаемое значение:
71+
// Строка - имя лога плагина
72+
//
73+
Функция ИмяЛога() Экспорт
74+
Возврат "oscript.lib.gitsync.plugins.replace-authors";
75+
КонецФункции
76+
77+
#КонецОбласти
78+
79+
#Область Подписки_на_события
80+
81+
Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт
82+
83+
Лог.Отладка("Активизация плагина <%1>", Имя());
84+
Обработчик = СтандартныйОбработчик;
85+
86+
КонецПроцедуры
87+
88+
Процедура ПередНачаломВыполнения(ПутьКХранилищу, ВходящийКаталогРабочейКопии) Экспорт
89+
90+
Лог.Отладка("Начата работа плагина <%1>", Имя());
91+
92+
КонецПроцедуры
93+
94+
Процедура ПослеПолученияТаблицыВерсий(ТаблицаВерсий, ПутьКХранилищу) Экспорт
95+
96+
ТаблицаПользователейХранилища = Обработчик.ПрочитатьТаблицуПользователейХранилища(ПутьКХранилищу);
97+
98+
Для Каждого СтрокаВерсии Из ТаблицаВерсий Цикл
99+
100+
СтрокВКомментарии = СтрЧислоСтрок(СтрокаВерсии.Комментарий);
101+
102+
Для Счетчик = 1 По СтрокВКомментарии Цикл
103+
104+
СтрокаКомментария = СтрПолучитьСтроку(СтрокаВерсии.Комментарий, Счетчик);
105+
106+
НужноЗаменитьАвтора = СтрНайти(СтрокаКомментария, МеткаЗамены) > 0;
107+
108+
Если НужноЗаменитьАвтора Тогда
109+
110+
НовыйАвтор = СтрЗаменить(СтрокаКомментария, МеткаЗамены, "");
111+
НовыйАвтор = СокрЛП(НовыйАвтор);
112+
113+
СтрокаПользователя = ТаблицаПользователейХранилища.Найти(НовыйАвтор, "Автор");
114+
115+
Если НЕ СтрокаПользователя = Неопределено Тогда
116+
117+
СтарыйАвтор = СтрокаВерсии.Автор;
118+
119+
СтрокаВерсии.Автор = СтрокаПользователя.Автор;
120+
СтрокаВерсии.ГУИД_Автора = СтрокаПользователя.ГУИД_Автора;
121+
122+
СтрокаВерсии.Комментарий = СтрЗаменить(СтрокаВерсии.Комментарий, СтрокаКомментария, "");
123+
124+
Лог.Информация("Заменен автор коммита с <%1> на <%2>", СтарыйАвтор, НовыйАвтор);
125+
126+
Иначе
127+
128+
ТекстИсключение = СтрШаблон(
129+
"В версии хранилища <%1> указан не корректный пользователь для замены <%2>",
130+
СтрокаВерсии.НомерВерсии,
131+
НовыйАвтор);
132+
133+
ВызватьИсключение ТекстИсключение;
134+
135+
КонецЕсли;
136+
137+
КонецЕсли;
138+
139+
КонецЦикла;
140+
141+
КонецЦикла;
142+
143+
КонецПроцедуры
144+
145+
#КонецОбласти
146+
147+
Процедура Инициализация()
148+
149+
Лог = Логирование.ПолучитьЛог(ИмяЛога());
150+
151+
МеткаЗамены = "--GitSyncAuthor ";
152+
153+
КонецПроцедуры
154+
155+
Инициализация();

0 commit comments

Comments
 (0)