|
5 | 5 | //
|
6 | 6 | /////////////////////////////////////////////////////////////////////////
|
7 | 7 |
|
| 8 | +#Использовать fs |
8 | 9 | #Использовать logos
|
9 | 10 | #Использовать tempfiles
|
10 | 11 |
|
11 | 12 | Перем Лог;
|
12 | 13 | Перем РабочийКаталог;
|
13 | 14 | Перем ВремКаталогСборки;
|
| 15 | +Перем ОбработчикСобытийСборки; |
14 | 16 |
|
15 | 17 | //////////////////////////////////////////////////////////
|
16 | 18 | // Сборка пакета
|
|
33 | 35 | Лог.Информация("Начинаю сборку в каталоге " + РабочийКаталог);
|
34 | 36 | УстановитьТекущийКаталог(РабочийКаталог);
|
35 | 37 | УточнитьФайлМанифеста(ФайлМанифеста);
|
| 38 | + ИнициализироватьОбработчикСобытийСборки(); |
| 39 | + ВызватьСобытиеПередСборкой(); |
36 | 40 | Манифест = ПрочитатьМанифест(ФайлМанифеста);
|
37 | 41 | СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог);
|
38 | 42 | УстановитьТекущийКаталог(ТекущийРабКаталог);
|
|
66 | 70 |
|
67 | 71 | КонецПроцедуры
|
68 | 72 |
|
| 73 | +Процедура ИнициализироватьОбработчикСобытийСборки() |
| 74 | + ОбработчикСобытийСборки = Неопределено; |
| 75 | + ИмяСкриптаСборки = КонстантыOpm.ИмяФайлаСкриптаСборки; |
| 76 | + |
| 77 | + ПутьКФайлуСборки = ОбъединитьПути(ТекущийКаталог(), ИмяСкриптаСборки); |
| 78 | + Если НЕ ФС.ФайлСуществует(ПутьКФайлуСборки) Тогда |
| 79 | + Возврат; |
| 80 | + КонецЕсли; |
| 81 | + |
| 82 | + Лог.Отладка("Найден скрипт сборки пакета"); |
| 83 | + ОбработчикСобытийСборки = ЗагрузитьСценарий(ПутьКФайлуСборки); |
| 84 | +КонецПроцедуры |
| 85 | + |
69 | 86 | Функция ПрочитатьМанифест(Знач ФайлМанифеста)
|
70 | 87 |
|
71 | 88 | ОписаниеПакета = Новый ОписаниеПакета();
|
|
93 | 110 |
|
94 | 111 | Архив.Записать();
|
95 | 112 |
|
| 113 | + ВызватьСобытиеПослеСборки(ФайлАрхива.ПолноеИмя); |
| 114 | + |
96 | 115 | Лог.Информация("Создана сборка %1", ФайлАрхива.ПолноеИмя);
|
97 | 116 |
|
98 | 117 | КонецПроцедуры
|
|
174 | 193 | АрхивЦелевойСистемы.Добавить(ПолныйПуть, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
|
175 | 194 | КонецЦикла;
|
176 | 195 |
|
| 196 | + ВызватьСобытиеПриСборке(АрхивЦелевойСистемы); |
| 197 | + |
177 | 198 | АрхивЦелевойСистемы.Записать();
|
178 | 199 |
|
179 | 200 | Архив.Добавить(ПутьАрхиваЦелевойСистемы, РежимСохраненияПутейZIP.НеСохранятьПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
|
180 | 201 |
|
181 | 202 | КонецПроцедуры
|
182 | 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 | + |
183 | 240 | ////////////////////////////////////////////////////////
|
184 | 241 | // Подготовка пустого каталога под новый пакет
|
185 | 242 |
|
|
208 | 265 | СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "docs");
|
209 | 266 |
|
210 | 267 | ЗаписатьЗаготовкуСкриптаУстановки(ВыходнойКаталог.ПолноеИмя);
|
| 268 | + ЗаписатьЗаготовкуСкриптаСборки(ВыходнойКаталог.ПолноеИмя); |
| 269 | + |
211 | 270 | ЗаписатьЗаготовкуМанифестаБиблиотеки(ВыходнойКаталог.ПолноеИмя, ИмяПакета);
|
212 | 271 |
|
213 | 272 | Лог.Информация("Готово");
|
|
265 | 324 |
|
266 | 325 | КонецПроцедуры
|
267 | 326 |
|
| 327 | +Процедура ЗаписатьЗаготовкуСкриптаСборки(Знач Каталог) |
| 328 | + |
| 329 | + Лог.Информация("Создаю заготовку скрипта сборки"); |
| 330 | + |
| 331 | + ИмяФайла = ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСкриптаСборки); |
| 332 | + ЗаписьТекста = Новый ЗаписьТекста(ИмяФайла); |
| 333 | + ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////"); |
| 334 | + ЗаписьТекста.ЗаписатьСтроку("// Сценарий сборки пакета "); |
| 335 | + ЗаписьТекста.ЗаписатьСтроку("/////////////////////////////////////////////////////////////////// |
| 336 | + | |
| 337 | + |"); |
| 338 | + |
| 339 | + ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером перед началом сборки пакета."); |
| 340 | + ЗаписьТекста.ЗаписатьСтроку("// "); |
| 341 | + ЗаписьТекста.ЗаписатьСтроку("// Параметры:"); |
| 342 | + ЗаписьТекста.ЗаписатьСтроку("// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета."); |
| 343 | + ЗаписьТекста.ЗаписатьСтроку("// "); |
| 344 | + ЗаписьТекста.ЗаписатьСтроку("Процедура ПередСборкой(Знач РабочийКаталог) Экспорт"); |
| 345 | + ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется"); |
| 346 | + ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
| 347 | + ЗаписьТекста.ЗаписатьСтроку(Символы.ПС); |
| 348 | + |
| 349 | + ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после помещения файлов в пакет."); |
| 350 | + ЗаписьТекста.ЗаписатьСтроку("// "); |
| 351 | + ЗаписьТекста.ЗаписатьСтроку("// Параметры:"); |
| 352 | + ЗаписьТекста.ЗаписатьСтроку("// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета."); |
| 353 | + ЗаписьТекста.ЗаписатьСтроку("// АрхивПакета - ЗаписьZIPФайла - ZIP-архив с содержимым пакета (включаемые файлы)."); |
| 354 | + ЗаписьТекста.ЗаписатьСтроку("// "); |
| 355 | + ЗаписьТекста.ЗаписатьСтроку("Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт"); |
| 356 | + ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется"); |
| 357 | + ЗаписьТекста.ЗаписатьСтроку(" // АрхивПакета.Добавить(ПолныйПутьНужногоФайла, |
| 358 | + | // РежимСохраненияПутейZIP.СохранятьОтносительныеПути, |
| 359 | + | // РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);"); |
| 360 | + ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
| 361 | + ЗаписьТекста.ЗаписатьСтроку(Символы.ПС); |
| 362 | + |
| 363 | + ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после сборки пакета."); |
| 364 | + ЗаписьТекста.ЗаписатьСтроку("// "); |
| 365 | + ЗаписьТекста.ЗаписатьСтроку("// Параметры:"); |
| 366 | + ЗаписьТекста.ЗаписатьСтроку("// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета."); |
| 367 | + ЗаписьТекста.ЗаписатьСтроку("// ПутьКФайлуПакета - Строка - Полный путь к собранному файлу пакета."); |
| 368 | + ЗаписьТекста.ЗаписатьСтроку("// "); |
| 369 | + ЗаписьТекста.ЗаписатьСтроку("Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт"); |
| 370 | + ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется"); |
| 371 | + ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры"); |
| 372 | + |
| 373 | + ЗаписьТекста.Закрыть(); |
| 374 | + |
| 375 | +КонецПроцедуры |
| 376 | + |
268 | 377 | Процедура ЗаписатьЗаготовкуМанифестаБиблиотеки(Знач Каталог, Знач ИмяПакета)
|
269 | 378 |
|
270 | 379 | Лог.Информация("Создаю заготовку описания пакета");
|
|
0 commit comments