|
12 | 12 | Перем Лог; |
13 | 13 | Перем РабочийКаталог; |
14 | 14 | Перем ВремКаталогСборки; |
15 | | -Перем ОбработчикСобытийСборки; |
| 15 | +Перем ОбработчикСобытий; |
16 | 16 |
|
17 | 17 | ////////////////////////////////////////////////////////// |
18 | 18 | // Сборка пакета |
|
35 | 35 | Лог.Информация("Начинаю сборку в каталоге " + РабочийКаталог); |
36 | 36 | УстановитьТекущийКаталог(РабочийКаталог); |
37 | 37 | УточнитьФайлМанифеста(ФайлМанифеста); |
38 | | - ИнициализироватьОбработчикСобытийСборки(); |
39 | | - ВызватьСобытиеПередСборкой(); |
40 | 38 | Манифест = ПрочитатьМанифест(ФайлМанифеста); |
| 39 | + ВызватьСобытиеПередСборкой(); |
41 | 40 | СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог); |
42 | 41 | УстановитьТекущийКаталог(ТекущийРабКаталог); |
43 | 42 | Лог.Информация("Сборка пакета завершена"); |
|
70 | 69 |
|
71 | 70 | КонецПроцедуры |
72 | 71 |
|
73 | | -Процедура ИнициализироватьОбработчикСобытийСборки() |
74 | | - ОбработчикСобытийСборки = Неопределено; |
75 | | - ИмяСкриптаСборки = КонстантыOpm.ИмяФайлаСкриптаСборки; |
76 | | - |
77 | | - ПутьКФайлуСборки = ОбъединитьПути(ТекущийКаталог(), ИмяСкриптаСборки); |
78 | | - Если НЕ ФС.ФайлСуществует(ПутьКФайлуСборки) Тогда |
79 | | - Возврат; |
80 | | - КонецЕсли; |
81 | | - |
82 | | - Лог.Отладка("Найден скрипт сборки пакета"); |
83 | | - ОбработчикСобытийСборки = ЗагрузитьСценарий(ПутьКФайлуСборки); |
84 | | -КонецПроцедуры |
85 | | - |
86 | 72 | Функция ПрочитатьМанифест(Знач ФайлМанифеста) |
87 | 73 |
|
88 | 74 | ОписаниеПакета = Новый ОписаниеПакета(); |
89 | 75 | Лог.Информация("Загружаю описание пакета..."); |
90 | 76 | ВнешнийКонтекст = Новый Структура("Описание", ОписаниеПакета); |
91 | | - Манифест = ЗагрузитьСценарий(ФайлМанифеста, ВнешнийКонтекст); |
| 77 | + ОбработчикСобытий = ЗагрузитьСценарий(ФайлМанифеста, ВнешнийКонтекст); |
92 | 78 | Лог.Информация("Описание пакета прочитано"); |
93 | 79 |
|
94 | 80 | Возврат ОписаниеПакета; |
|
116 | 102 |
|
117 | 103 | КонецПроцедуры |
118 | 104 |
|
119 | | -Процедура ДобавитьОписаниеМетаданныхПакета(Знач Архив, Знач Манифест); |
| 105 | +Процедура ДобавитьОписаниеМетаданныхПакета(Знач Архив, Знач Манифест) |
120 | 106 |
|
121 | 107 | ПутьМанифеста = ОбъединитьПути(ВремКаталогСборки, "opm-metadata.xml"); |
122 | 108 | Запись = Новый ЗаписьXML; |
|
202 | 188 | КонецПроцедуры |
203 | 189 |
|
204 | 190 | Процедура ВызватьСобытиеПередСборкой() |
205 | | - Если ОбработчикСобытийСборки = Неопределено Тогда |
206 | | - Возврат; |
207 | | - КонецЕсли; |
208 | | - |
209 | 191 | Рефлектор = Новый Рефлектор; |
210 | | - Если Рефлектор.МетодСуществует(ОбработчикСобытийСборки, "ПередСборкой") Тогда |
| 192 | + Если Рефлектор.МетодСуществует(ОбработчикСобытий, "ПередСборкой") Тогда |
211 | 193 | Лог.Отладка("Вызываю событие ПередСборкой"); |
212 | | - ОбработчикСобытийСборки.ПередСборкой(РабочийКаталог); |
| 194 | + ОбработчикСобытий.ПередСборкой(РабочийКаталог); |
213 | 195 | КонецЕсли; |
214 | 196 | КонецПроцедуры |
215 | 197 |
|
216 | 198 | Процедура ВызватьСобытиеПриСборке(АрхивПакета) |
217 | | - Если ОбработчикСобытийСборки = Неопределено Тогда |
218 | | - Возврат; |
219 | | - КонецЕсли; |
220 | | - |
221 | 199 | Рефлектор = Новый Рефлектор; |
222 | | - Если Рефлектор.МетодСуществует(ОбработчикСобытийСборки, "ПриСборке") Тогда |
| 200 | + Если Рефлектор.МетодСуществует(ОбработчикСобытий, "ПриСборке") Тогда |
223 | 201 | Лог.Отладка("Вызываю событие ПриСборке"); |
224 | | - ОбработчикСобытийСборки.ПриСборке(РабочийКаталог, АрхивПакета); |
| 202 | + ОбработчикСобытий.ПриСборке(РабочийКаталог, АрхивПакета); |
225 | 203 | КонецЕсли; |
226 | 204 | КонецПроцедуры |
227 | 205 |
|
228 | 206 | Процедура ВызватьСобытиеПослеСборки(ПутьКФайлуПакета) |
229 | | - Если ОбработчикСобытийСборки = Неопределено Тогда |
230 | | - Возврат; |
231 | | - КонецЕсли; |
232 | | - |
233 | 207 | Рефлектор = Новый Рефлектор; |
234 | | - Если Рефлектор.МетодСуществует(ОбработчикСобытийСборки, "ПослеСборки") Тогда |
| 208 | + Если Рефлектор.МетодСуществует(ОбработчикСобытий, "ПослеСборки") Тогда |
235 | 209 | Лог.Отладка("Вызываю событие ПослеСборки"); |
236 | | - ОбработчикСобытийСборки.ПослеСборки(РабочийКаталог, ПутьКФайлуПакета); |
| 210 | + ОбработчикСобытий.ПослеСборки(РабочийКаталог, ПутьКФайлуПакета); |
237 | 211 | КонецЕсли; |
238 | 212 | КонецПроцедуры |
239 | 213 |
|
|
264 | 238 | СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "tests"); |
265 | 239 | СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "docs"); |
266 | 240 |
|
267 | | - ЗаписатьЗаготовкуСкриптаУстановки(ВыходнойКаталог.ПолноеИмя); |
268 | | - ЗаписатьЗаготовкуСкриптаСборки(ВыходнойКаталог.ПолноеИмя); |
269 | | - |
270 | 241 | ЗаписатьЗаготовкуМанифестаБиблиотеки(ВыходнойКаталог.ПолноеИмя, ИмяПакета); |
271 | 242 |
|
272 | 243 | Лог.Информация("Готово"); |
|
278 | 249 | СоздатьКаталог(ОбъединитьПути(База, Имя)); |
279 | 250 | КонецПроцедуры |
280 | 251 |
|
281 | | -Процедура ЗаписатьЗаготовкуСкриптаУстановки(Знач Каталог) |
| 252 | +Процедура ЗаписатьЗаготовкуСкриптаУстановки(ЗаписьТекста) |
282 | 253 |
|
283 | | - Лог.Информация("Создаю заготовку скрипта установки/удаления"); |
| 254 | + Лог.Информация("Создаю процедур установки/удаления"); |
284 | 255 |
|
285 | | - ИмяФайла = ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСкриптаУстановки); |
286 | | - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); |
287 | 256 | ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////"); |
288 | | - ЗаписьТекста.ЗаписатьСтроку("// Сценарий установки и удаления пакета с клиентской машины "); |
| 257 | + ЗаписьТекста.ЗаписатьСтроку("// Процедуры установки пакета с клиентской машины "); |
289 | 258 | ЗаписьТекста.ЗаписатьСтроку("/////////////////////////////////////////////////////////////////// |
290 | 259 | | |
291 | 260 | |"); |
292 | | - |
293 | | - ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером перед установкой пакета на клиентскую машину."); |
294 | | - ЗаписьТекста.ЗаписатьСтроку("// "); |
295 | | - ЗаписьТекста.ЗаписатьСтроку("// Параметры:"); |
296 | | - ЗаписьТекста.ЗаписатьСтроку("// АрхивПакета - ЧтениеZipФайла. Открытый архив пакета."); |
297 | | - ЗаписьТекста.ЗаписатьСтроку("// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет."); |
298 | | - ЗаписьТекста.ЗаписатьСтроку("// "); |
299 | | - ЗаписьТекста.ЗаписатьСтроку("Процедура ПередУстановкой(Знач АрхивПакета, Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт"); |
300 | | - ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику установки, если требуется"); |
301 | | - ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
302 | | - ЗаписьТекста.ЗаписатьСтроку(Символы.ПС); |
303 | | - |
| 261 | + |
304 | 262 | ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину."); |
305 | 263 | ЗаписьТекста.ЗаписатьСтроку("// "); |
306 | 264 | ЗаписьТекста.ЗаписатьСтроку("// Параметры:"); |
|
310 | 268 | ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику установки, если требуется"); |
311 | 269 | ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
312 | 270 | ЗаписьТекста.ЗаписатьСтроку(Символы.ПС); |
313 | | - |
314 | | - ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером при удалении пакета с клиентской машины."); |
315 | | - ЗаписьТекста.ЗаписатьСтроку("// "); |
316 | | - ЗаписьТекста.ЗаписатьСтроку("// Параметры:"); |
317 | | - ЗаписьТекста.ЗаписатьСтроку("// КаталогУстановкиПакета - строка. Каталог в который установлен пакет."); |
318 | | - ЗаписьТекста.ЗаписатьСтроку("// "); |
319 | | - ЗаписьТекста.ЗаписатьСтроку("Процедура ПриУдалении(Знач КаталогУстановкиПакета) Экспорт"); |
320 | | - ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику удаления, если требуется"); |
321 | | - ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
322 | | - |
323 | | - ЗаписьТекста.Закрыть(); |
324 | | - |
| 271 | + |
325 | 272 | КонецПроцедуры |
326 | 273 |
|
327 | | -Процедура ЗаписатьЗаготовкуСкриптаСборки(Знач Каталог) |
| 274 | +Процедура ЗаписатьЗаготовкуСкриптаСборки(Знач ЗаписьТекста) |
328 | 275 |
|
329 | | - Лог.Информация("Создаю заготовку скрипта сборки"); |
| 276 | + Лог.Информация("Создаю заготовку процедур сборки"); |
330 | 277 |
|
331 | | - ИмяФайла = ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСкриптаСборки); |
332 | | - ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); |
333 | 278 | ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////"); |
334 | | - ЗаписьТекста.ЗаписатьСтроку("// Сценарий сборки пакета "); |
| 279 | + ЗаписьТекста.ЗаписатьСтроку("// Процедуры сборки пакета "); |
335 | 280 | ЗаписьТекста.ЗаписатьСтроку("/////////////////////////////////////////////////////////////////// |
336 | 281 | | |
337 | 282 | |"); |
|
369 | 314 | ЗаписьТекста.ЗаписатьСтроку("Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт"); |
370 | 315 | ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется"); |
371 | 316 | ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
372 | | - |
373 | | - ЗаписьТекста.Закрыть(); |
| 317 | + ЗаписьТекста.ЗаписатьСтроку(Символы.ПС); |
374 | 318 |
|
375 | 319 | КонецПроцедуры |
376 | 320 |
|
|
384 | 328 | ЗаписьТекста.ЗаписатьСтроку("// Описание пакета для сборки и установки"); |
385 | 329 | ЗаписьТекста.ЗаписатьСтроку("// Полную документацию см. на hub.oscript.io/packaging"); |
386 | 330 | ЗаписьТекста.ЗаписатьСтроку("//"); |
387 | | - |
| 331 | + ЗаписьТекста.ЗаписатьСтроку(""); |
| 332 | + |
| 333 | + Консоль = Новый Консоль; |
| 334 | + ДобавлятьПроцедурыПереопределения = Неопределено; |
| 335 | + Лог.Информация("Добавить в описание пакета процедуры переопределения сборки и установки?"); |
| 336 | + Пока Истина Цикл |
| 337 | + Лог.Информация("(y/n)"); |
| 338 | + Значение = Консоль.ПрочитатьСтроку(); |
| 339 | + Если ВРег(Значение) = "Y" Тогда |
| 340 | + ДобавлятьПроцедурыПереопределения = Истина; |
| 341 | + Прервать; |
| 342 | + ИначеЕсли ВРег(Значение) = "N" Тогда |
| 343 | + ДобавлятьПроцедурыПереопределения = Ложь; |
| 344 | + Прервать; |
| 345 | + КонецЕсли; |
| 346 | + КонецЦикла; |
| 347 | + |
| 348 | + Если ДобавлятьПроцедурыПереопределения Тогда |
| 349 | + ЗаписатьЗаготовкуСкриптаУстановки(ЗаписьТекста); |
| 350 | + ЗаписатьЗаготовкуСкриптаСборки(ЗаписьТекста); |
| 351 | + КонецЕсли; |
| 352 | + |
388 | 353 | ЗаписьТекста.ЗаписатьСтроку(" |
389 | | - | Описание.Имя("""+ИмяПакета+""") |
390 | | - | .Версия(""1.0.1"") |
391 | | - | .Автор("""") |
392 | | - | .АдресАвтора(""author@somemail.com"") |
393 | | - | .Описание(""Это очень хороший и нужный пакет программ"") |
394 | | - | .ВерсияСреды(""1.0.11"") |
395 | | - | .ВключитьФайл(""src"") |
396 | | - | .ВключитьФайл(""doc"") |
397 | | - | .ВключитьФайл(""tests"") |
398 | | - | .ВключитьФайл("""+КонстантыOpm.ИмяФайлаСкриптаУстановки+""") |
399 | | - | //.ЗависитОт(""package1"", "">=2.0"") |
400 | | - | //.ЗависитОт(""package2"", "">=1.1"", ""<2.0"") |
401 | | - | //.ОпределяетКласс(""УправлениеВселенной"", ""src/universe-mngr.os"") |
402 | | - | //.ОпределяетМодуль(""ПолезныеФункции"", ""src/tools.os"") |
403 | | - | ;"); |
| 354 | + |Описание.Имя(""" + ИмяПакета + """) |
| 355 | + | .Версия(""1.0.1"") |
| 356 | + | .Автор("""") |
| 357 | + | .АдресАвтора(""author@somemail.com"") |
| 358 | + | .Описание(""Это очень хороший и нужный пакет программ"") |
| 359 | + | .ВерсияСреды(""1.0.11"") |
| 360 | + | .ВключитьФайл(""src"") |
| 361 | + | .ВключитьФайл(""doc"") |
| 362 | + | .ВключитьФайл(""tests"")"); |
| 363 | + |
| 364 | + Если ДобавлятьПроцедурыПереопределения Тогда |
| 365 | + ЗаписьТекста.ЗаписатьСтроку( |
| 366 | + " .ВключитьФайл(""" + КонстантыOpm.ИмяФайлаСпецификацииПакета + """)"); |
| 367 | + КонецЕсли; |
| 368 | + |
| 369 | + ЗаписьТекста.ЗаписатьСтроку( |
| 370 | + " //.ЗависитОт(""package1"", "">=2.0"") |
| 371 | + | //.ЗависитОт(""package2"", "">=1.1"", ""<2.0"") |
| 372 | + | //.ОпределяетКласс(""УправлениеВселенной"", ""src/universe-mngr.os"") |
| 373 | + | //.ОпределяетМодуль(""ПолезныеФункции"", ""src/tools.os"") |
| 374 | + | ;"); |
404 | 375 |
|
405 | 376 | ЗаписьТекста.Закрыть(); |
406 | 377 |
|
|
0 commit comments