-
Notifications
You must be signed in to change notification settings - Fork 35
/
increment.os
257 lines (180 loc) · 12.1 KB
/
increment.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
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
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
#Использовать logos
#Использовать gitrunner
#Использовать fs
Перем Лог;
Перем Обработчик;
Перем ИмяФайлаДампаКонфигурации;
Перем ПутьКФайлуВерсийМетаданных;
Перем ОчиститьКаталогРабочейКопии;
Перем ВыгрузкаИзмененийВозможна;
Перем ИмяРасширения;
Перем ИмяФайлаИзменений;
Перем ПутьКФайлуИзменений;
#Область Интерфейс_плагина
// Возвращает версию плагина
//
// Возвращаемое значение:
// Строка - текущая версия плагина
//
Функция Версия() Экспорт
Возврат "1.6.0";
КонецФункции
// Возвращает приоритет выполнения плагина
//
// Возвращаемое значение:
// Число - приоритет выполнения плагина
//
Функция Приоритет() Экспорт
Возврат 0;
КонецФункции
// Возвращает описание плагина
//
// Возвращаемое значение:
// Строка - описание функциональности плагина
//
Функция Описание() Экспорт
Возврат "Плагин добавляет возможность инкрементальной выгрузки в конфигурации";
КонецФункции
// Возвращает подробную справку к плагину
//
// Возвращаемое значение:
// Строка - подробная справка для плагина
//
Функция Справка() Экспорт
Возврат "Справка плагина";
КонецФункции
// Возвращает имя плагина
//
// Возвращаемое значение:
// Строка - имя плагина при подключении
//
Функция Имя() Экспорт
Возврат "increment";
КонецФункции
// Возвращает имя лога плагина
//
// Возвращаемое значение:
// Строка - имя лога плагина
//
Функция ИмяЛога() Экспорт
Возврат "oscript.lib.gitsync.plugins.increment";
КонецФункции
#КонецОбласти
#Область Подписки_на_события
Процедура ПриАктивизации(СтандартныйОбработчик) Экспорт
Обработчик = СтандартныйОбработчик;
ПутьКФайлуВерсийМетаданных = "";
ВыгрузкаИзмененийВозможна = Ложь;
КонецПроцедуры
// Вызывается перед началом работы менеджера синхронизации
//
// Параметры:
// ПутьКХранилищу - Строка - полный путь к хранилищу конфигурации
// КаталогРабочейКопии - Строка - полный путь к рабочему каталогу копии
//
Процедура ПередНачаломВыполнения(ПутьКХранилищу, КаталогРабочейКопии) Экспорт
ИмяРасширения = Обработчик.ПолучитьИмяРасширения();
КонецПроцедуры
Процедура ПередВыгрузкойКонфигурациюВИсходники(Конфигуратор, КаталогРабочейКопии, КаталогВыгрузки, ПутьКХранилищу, НомерВерсии) Экспорт
Лог.Информация("Определяю тип возможной выгрузки конфигурации в файлы");
ТекущийФайлВерсийМетаданных = Новый Файл(ОбъединитьПути(КаталогРабочейКопии, ИмяФайлаДампаКонфигурации));
ПутьКФайлуВерсийМетаданных = ТекущийФайлВерсийМетаданных.ПолноеИмя;
Лог.Отладка("Проверяю существование файла <%1> в каталоге <%2>, файл <%3>",
ИмяФайлаДампаКонфигурации,
КаталогРабочейКопии,
?(ТекущийФайлВерсийМетаданных.Существует(), "существует", "отсутствует"));
Лог.Отладка("Проверяю возможность обновления выгрузки для файла <%1>", ПутьКФайлуВерсийМетаданных);
ВыгрузкаИзмененийВозможна = ТекущийФайлВерсийМетаданных.Существует()
И ПроверитьВозможностьОбновленияФайловВыгрузки(Конфигуратор, ПутьКФайлуВерсийМетаданных);
Лог.Отладка("Инкрементальная выгрузка конфигурации - %1", ?(ВыгрузкаИзмененийВозможна, "ВОЗМОЖНА", "НЕВОЗМОЖНА"));
Консоль.Вывести("ИНФОРМАЦИЯ - Тип выгрузки конфигурации в файлы:");
Если ВыгрузкаИзмененийВозможна Тогда
Текст = "ИНКРЕМЕНТАЛЬНАЯ ВЫГРУЗКА";
Иначе
Текст = "ПОЛНАЯ ВЫГРУЗКА";
КонецЕсли;
Консоль.Вывести(" " + Текст);
Консоль.ВывестиСтроку("");
КонецПроцедуры
Процедура ПриВыгрузкеКонфигурациюВИсходники(Конфигуратор, КаталогВыгрузки, СтандартнаяОбработка) Экспорт
Если ВыгрузкаИзмененийВозможна Тогда
СтандартнаяОбработка = Ложь;
Параметры = Конфигуратор.ПолучитьПараметрыЗапуска();
Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1", ОбернутьВКавычки(КаталогВыгрузки)));
Параметры.Добавить("-update");
Параметры.Добавить(СтрШаблон("-configDumpInfoForChanges %1", ОбернутьВКавычки(ПутьКФайлуВерсийМетаданных)));
Если ЗначениеЗаполнено(ИмяРасширения) Тогда
Параметры.Добавить(СтрШаблон("-Extension %1", ИмяРасширения));
КонецЕсли;
Конфигуратор.ВыполнитьКоманду(Параметры);
Если ФС.ФайлСуществует(ПутьКФайлуИзменений) Тогда
ПереместитьФайл(ПутьКФайлуИзменений, ОбъединитьПути(КаталогВыгрузки, ИмяФайлаИзменений));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ПриОчисткеКаталогаРабочейКопии(КаталогРабочейКопии, СоответствиеИменФайловДляПропуска, СтандартнаяОбработка) Экспорт
Если ВыгрузкаИзмененийВозможна Тогда
СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область Вспомогательные_процедуры_и_функции
// Функция проверяет возможность обновления файлов выгрузки, для каталога или конкретного файла версий
//
// Параметры:
// Конфигуратор - <Тип.Вид> - <описание параметра>
// КаталогВыгрузки - Строка - временный каталог
// ПутьКФайлуВерсийДляСравнения - Строка - <описание параметра>
//
// Возвращаемое значение:
// Булево - обновление возможно?
//
Функция ПроверитьВозможностьОбновленияФайловВыгрузки(Конфигуратор, Знач ПутьКФайлуВерсийДляСравнения = "")
ОбновлениеВозможно = Ложь;
КаталогПроверки = ВременныеФайлы.СоздатьКаталог();
ТекущийФайлВерсийМетаданных = Новый Файл(ОбъединитьПути(КаталогПроверки, "ConfigDumpInfo.xml"));
Если ПустаяСтрока(ПутьКФайлуВерсийДляСравнения) Тогда
Возврат ОбновлениеВозможно;
КонецЕсли;
ПутьКФайлуИзменений = ВременныеФайлы.НовоеИмяФайла();
Параметры = Конфигуратор.ПолучитьПараметрыЗапуска();
Параметры.Добавить(СтрШаблон("/DumpConfigToFiles %1", ОбернутьВКавычки(КаталогПроверки)));
Параметры.Добавить(СтрШаблон("-getChanges %1", ОбернутьВКавычки(ПутьКФайлуИзменений)));
Если ЗначениеЗаполнено(ИмяРасширения) Тогда
Параметры.Добавить(СтрШаблон("-Extension %1", ИмяРасширения));
КонецЕсли;
Если ЗначениеЗаполнено(ПутьКФайлуВерсийДляСравнения) Тогда
Параметры.Добавить(СтрШаблон("-configDumpInfoForChanges %1", ОбернутьВКавычки(ПутьКФайлуВерсийДляСравнения)));
КонецЕсли;
Конфигуратор.ВыполнитьКоманду(Параметры);
ФайлИзменений = Новый Файл(ПутьКФайлуИзменений);
Если ФайлИзменений.Существует() Тогда
СтрокаПолныйДамп = ВРег("FullDump");
ЧтениеФайла = Новый ЧтениеТекста(ПутьКФайлуИзменений);
СтрокаВыгрузки = Лев(ВРег(ЧтениеФайла.ПрочитатьСтроку()), СтрДлина(СтрокаПолныйДамп));
Если Не ПустаяСтрока(СокрЛП(СтрокаВыгрузки)) Тогда
Лог.Отладка("Строка проверки на возможность выгрузки конфигурации: <%1> = <%2> ", СтрокаПолныйДамп, СтрокаВыгрузки);
ОбновлениеВозможно = НЕ (СтрокаВыгрузки = СтрокаПолныйДамп);
КонецЕсли;
ЧтениеФайла.Закрыть();
КонецЕсли;
ВременныеФайлы.УдалитьФайл(КаталогПроверки);
Если НЕ ОбновлениеВозможно Тогда
ВременныеФайлы.УдалитьФайл(ПутьКФайлуИзменений);
КонецЕсли;
Возврат ОбновлениеВозможно;
КонецФункции
Функция ОбернутьВКавычки(Знач Строка)
Возврат """" + Строка + """";
КонецФункции
Процедура Инициализация()
Лог = Логирование.ПолучитьЛог(ИмяЛога());
ПутьКФайлуВерсийМетаданных = "";
ПутьКФайлуИзменений = "";
ИмяФайлаДампаКонфигурации = "ConfigDumpInfo.xml";
ИмяФайлаИзменений = "dumplist.txt"; // файл используется в 2х плагинах - increment и edtExport
ВыгрузкаИзмененийВозможна = Ложь;
ИмяРасширения = "";
КонецПроцедуры
#КонецОбласти
Инициализация();