Skip to content

Commit 73fc23e

Browse files
committed
feat: Реализован плагин drop-config-dump для автоматического удаления файла ConfigDumpInfo.xml.
1 parent c266591 commit 73fc23e

File tree

2 files changed

+290
-0
lines changed

2 files changed

+290
-0
lines changed

packagedef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,5 @@
5656
.ОпределяетКласс("Плагин_ВыгрузкаВФорматеEDT", "src/Классы/edtExport.os")
5757
.ОпределяетКласс("Плагин_ЗаменаАвторов", "src/Классы/replaceAuthors.os")
5858
.ОпределяетКласс("Плагин_Ibcmd", "src/Классы/useIbcmd.os")
59+
.ОпределяетКласс("Плагин_DropConfigDump", "src/Классы/dropConfigDump.os")
5960
;

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

Lines changed: 289 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,289 @@
1+
#Использовать logos
2+
#Использовать gitsync
3+
4+
Перем Лог; // Лог - объект протоколирования (logger)
5+
Перем Обработчик; // Команда - обработчик текущей команды gitsync
6+
Перем КомандыПлагина; // Массив из Строка - список команд к которым подключается текущий плагин
7+
Перем ТекущаяКоманда; // Строка - имя выполняемой команды gitsync
8+
9+
Перем ЗакоммититьФайлИгнорируемыхИзменений; // Булево - Истина - закоммитить файл .gitignore.
10+
11+
#Область Интерфейс_плагина
12+
13+
// Возвращает версию плагина
14+
//
15+
// Возвращаемое значение:
16+
// Строка - текущая версия плагина
17+
//
18+
Функция Версия() Экспорт
19+
Возврат "1.0.0";
20+
КонецФункции
21+
22+
// Возвращает приоритет выполнения плагина
23+
//
24+
// Возвращаемое значение:
25+
// Число - приоритет выполнения плагина
26+
//
27+
Функция Приоритет() Экспорт
28+
Возврат 0;
29+
КонецФункции
30+
31+
// Возвращает описание плагина
32+
//
33+
// Возвращаемое значение:
34+
// Строка - описание функциональности плагина
35+
//
36+
Функция Описание() Экспорт
37+
Возврат "Плагин отключает версионирование файла дампа версий объектов конфигурации (ConfigDumpInfo.xml)
38+
|и удаляет его после выгрузки конфигурации в файлы.";
39+
КонецФункции
40+
41+
// Возвращает подробную справку к плагину
42+
//
43+
// Возвращаемое значение:
44+
// Строка - подробная справка для плагина
45+
//
46+
Функция Справка() Экспорт
47+
Возврат "Плагин отключает версионирование файла дампа версий объектов конфигурации (ConfigDumpInfo.xml)
48+
|и удаляет его после выгрузки конфигурации в файлы.";
49+
КонецФункции
50+
51+
// Возвращает имя плагина
52+
//
53+
// Возвращаемое значение:
54+
// Строка - имя плагина при подключении
55+
//
56+
Функция Имя() Экспорт
57+
Возврат "drop-config-dump";
58+
КонецФункции
59+
60+
// Возвращает имя лога плагина
61+
//
62+
// Возвращаемое значение:
63+
// Строка - имя лога плагина
64+
//
65+
Функция ИмяЛога() Экспорт
66+
Возврат СтрШаблон("oscript.lib.gitsync.plugins.%1", Имя());
67+
КонецФункции
68+
69+
#КонецОбласти
70+
71+
#Область Подписки_на_события
72+
73+
Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт
74+
75+
Обработчик = СтандартныйОбработчик;
76+
77+
Если НЕ (ВРег(ТекущаяКоманда) = "ALL"
78+
ИЛИ ВРег(ТекущаяКоманда) = "SYNC") Тогда
79+
Возврат;
80+
КонецЕсли;
81+
82+
МенеджерПлагинов = ПараметрыПриложения.МенеджерПлагинов();
83+
ИндексПлагинов = МенеджерПлагинов.ПолучитьИндексПлагинов();
84+
ОтключаемыеПлагины = ОтключаемыеПлагины();
85+
86+
Для Каждого ТекЭлемент Из ИндексПлагинов Цикл
87+
Если ОтключаемыеПлагины.Найти(ВРег(ТекЭлемент.Ключ)) = Неопределено Тогда
88+
Продолжить;
89+
КонецЕсли;
90+
Если НЕ ТекЭлемент.Значение.Включен() Тогда
91+
Продолжить;
92+
КонецЕсли;
93+
94+
Лог.Информация("Плагин ""%1"" не совместим с плагином ""%2"" и будет отключен на время выполнения синхронизации!",
95+
ТекЭлемент.Ключ,
96+
Имя());
97+
ТекЭлемент.Значение.Отключить();
98+
99+
КонецЦикла;
100+
101+
КонецПроцедуры
102+
103+
Процедура ПриРегистрацииКомандыПриложения(ИмяКоманды, КлассРеализации) Экспорт
104+
105+
ТекущаяКоманда = ИмяКоманды;
106+
107+
Лог.Отладка("Ищу команду <%1> в списке поддерживаемых", ИмяКоманды);
108+
Если КомандыПлагина.Найти(ИмяКоманды) = Неопределено Тогда
109+
Возврат;
110+
КонецЕсли;
111+
112+
КонецПроцедуры
113+
114+
Процедура ПриПолученииПараметров(ПараметрыКоманды) Экспорт
115+
116+
КонецПроцедуры
117+
118+
Процедура ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор,
119+
КаталогРабочейКопии,
120+
КаталогВыгрузки,
121+
ПутьКХранилищу,
122+
НомерВерсии) Экспорт
123+
124+
ФайлДампаИзменений = Новый Файл(ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДампаИзменений()));
125+
126+
Если ФайлДампаИзменений.Существует() Тогда
127+
УдалитьФайлы(ФайлДампаИзменений.ПолноеИмя);
128+
КонецЕсли;
129+
130+
КонецПроцедуры
131+
132+
Процедура ПослеВыгрузкиКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки) Экспорт
133+
134+
ФайлДампаИзменений = Новый Файл(ОбъединитьПути(КаталогВыгрузки, ИмяФайлаДампаИзменений()));
135+
136+
Если ФайлДампаИзменений.Существует() Тогда
137+
УдалитьФайлы(ФайлДампаИзменений.ПолноеИмя);
138+
КонецЕсли;
139+
140+
КонецПроцедуры
141+
142+
Процедура ПередКоммитом(КаталогРабочейКопии, Комментарий, Автор, Дата) Экспорт
143+
144+
КорневойКаталогГит = КорневойКаталогГит(КаталогРабочейКопии);
145+
146+
Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда
147+
Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", КаталогРабочейКопии);
148+
Возврат;
149+
КонецЕсли;
150+
151+
ПутьКФайлуДампаИзменений = ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДампаИзменений());
152+
153+
ФайлИгнорируемыхИзменений = Новый Файл(ОбъединитьПути(КорневойКаталогГит, ".gitignore"));
154+
155+
ТекстИгнорируемыхИзменений = Новый ТекстовыйДокумент();
156+
157+
Если ФайлИгнорируемыхИзменений.Существует() И ФайлИгнорируемыхИзменений.ЭтоФайл() Тогда
158+
ТекстИгнорируемыхИзменений.Прочитать(ФайлИгнорируемыхИзменений.ПолноеИмя);
159+
КонецЕсли;
160+
161+
ОтносительныйПуть = СтрЗаменить(ПутьКФайлуДампаИзменений, КорневойКаталогГит, "");
162+
163+
Для НомерСтроки = 1 По ТекстИгнорируемыхИзменений.КоличествоСтрок() Цикл
164+
ТекСтрока = ТекстИгнорируемыхИзменений.ПолучитьСтроку(НомерСтроки);
165+
Если СтрНайти(ТекСтрока, ОтносительныйПуть) > 0 Тогда
166+
Возврат;
167+
КонецЕсли;
168+
КонецЦикла;
169+
170+
ТекстИгнорируемыхИзменений.ДобавитьСтроку(ОтносительныйПуть);
171+
ТекстИгнорируемыхИзменений.Записать(ФайлИгнорируемыхИзменений.ПолноеИмя);
172+
173+
ЗакоммититьФайлИгнорируемыхИзменений = Истина;
174+
175+
КонецПроцедуры
176+
177+
Процедура ПриКоммите(ГитРепозиторий,
178+
Комментарий,
179+
ПроиндексироватьОтслеживаемыеФайлы,
180+
ИмяФайлаКомментария,
181+
АвторДляГит,
182+
ДатаДляГит,
183+
Коммитер,
184+
ДатаКоммитера) Экспорт
185+
186+
Если НЕ ЗакоммититьФайлИгнорируемыхИзменений Тогда
187+
Возврат;
188+
КонецЕсли;
189+
190+
РабочийКаталог = ГитРепозиторий.ПолучитьРабочийКаталог();
191+
192+
КорневойКаталогГит = КорневойКаталогГит(РабочийКаталог);
193+
194+
Если НЕ ЗначениеЗаполнено(КорневойКаталогГит) Тогда
195+
Лог.Предупреждение("Каталог ""%1"" не является репозитарием git!", РабочийКаталог);
196+
Возврат;
197+
КонецЕсли;
198+
199+
ФайлИгнорируемыхИзменений = Новый Файл(ОбъединитьПути(КорневойКаталогГит, ".gitignore"));
200+
201+
ПараметрыКомандыГит = Новый Массив();
202+
ПараметрыКомандыГит.Добавить("add");
203+
ПараметрыКомандыГит.Добавить("-A");
204+
ПараметрыКомандыГит.Добавить(ФайлИгнорируемыхИзменений.ПолноеИмя);
205+
206+
ГитРепозиторий.ВыполнитьКоманду(ПараметрыКомандыГит);
207+
208+
КонецПроцедуры
209+
210+
#КонецОбласти
211+
212+
#Область Вспомогательные_процедуры_и_функции
213+
214+
// Функция возвращает путь к корневому каталогу репозитария git
215+
//
216+
// Параметры:
217+
// КаталогРабочейКопии - Строка - проверяемый каталог
218+
//
219+
// Возвращаемое значение:
220+
// Строка - путь к корневому каталогу репозитария git
221+
// если пустая строка, то каталог не является репозитарием git
222+
//
223+
Функция КорневойКаталогГит(Знач КаталогРабочейКопии)
224+
225+
ТекущийКаталог = Новый Файл(КаталогРабочейКопии);
226+
227+
ЭтоКорневойКаталог = (ТекущийКаталог.ПолноеИмя = "/"
228+
ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 1) = ":"
229+
ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 2) = ":/"
230+
ИЛИ Прав(ТекущийКаталог.ПолноеИмя, 2) = ":\");
231+
232+
Если ЭтоКорневойКаталог Тогда
233+
Возврат "";
234+
КонецЕсли;
235+
236+
СлужебныйКаталогГит = Новый Файл(ОбъединитьПути(ТекущийКаталог.ПолноеИмя, ".git"));
237+
238+
Если СлужебныйКаталогГит.Существует() И СлужебныйКаталогГит.ЭтоКаталог() Тогда
239+
Возврат ТекущийКаталог.ПолноеИмя;
240+
Иначе
241+
Возврат КорневойКаталогГит(ТекущийКаталог.Путь);
242+
КонецЕсли;
243+
244+
КонецФункции // КорневойКаталогГит()
245+
246+
// Функция возвращает имя файла дампа изменений
247+
//
248+
// Возвращаемое значение:
249+
// Строка - "ConfigDumpInfo.xml" имя файла дампа изменений
250+
//
251+
Функция ИмяФайлаДампаИзменений()
252+
Возврат "ConfigDumpInfo.xml";
253+
КонецФункции // ИмяФайлаДампаИзменений()
254+
255+
// Функция возвращает имя плагина инкрементальной выгрузки
256+
//
257+
// Возвращаемое значение:
258+
// Строка - "INCREMENT" имя плагина инкрементальной выгрузки
259+
//
260+
Функция ИмяПлагинаИнкрементальнойВыгрузки()
261+
Возврат "INCREMENT";
262+
КонецФункции // ИмяПлагинаИнкрементальнойВыгрузки()
263+
264+
// Функция возвращает имя плагина инкрементальной выгрузки
265+
//
266+
// Возвращаемое значение:
267+
// ФиксированныйМассив из Строка - список отключаемых плагинов
268+
//
269+
Функция ОтключаемыеПлагины()
270+
271+
ОтключаемыеПлагины = Новый Массив();
272+
ОтключаемыеПлагины.Добавить(ИмяПлагинаИнкрементальнойВыгрузки());
273+
274+
Возврат Новый ФиксированныйМассив(ОтключаемыеПлагины);
275+
276+
КонецФункции // ОтключаемыеПлагины()
277+
278+
#КонецОбласти
279+
280+
Процедура Инициализация()
281+
282+
Лог = Логирование.ПолучитьЛог(ИмяЛога());
283+
КомандыПлагина = Новый Массив;
284+
КомандыПлагина.Добавить("init");
285+
КомандыПлагина.Добавить("sync");
286+
287+
КонецПроцедуры
288+
289+
Инициализация();

0 commit comments

Comments
 (0)