Skip to content

Commit 3f1ad78

Browse files
committed
Merge branch 'release/v0.10.0'
2 parents 0f22254 + fe02c82 commit 3f1ad78

File tree

2 files changed

+112
-1
lines changed

2 files changed

+112
-1
lines changed

src/Классы/СборщикПакета.os

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
//
66
/////////////////////////////////////////////////////////////////////////
77

8+
#Использовать fs
89
#Использовать logos
910
#Использовать tempfiles
1011

1112
Перем Лог;
1213
Перем РабочийКаталог;
1314
Перем ВремКаталогСборки;
15+
Перем ОбработчикСобытийСборки;
1416

1517
//////////////////////////////////////////////////////////
1618
// Сборка пакета
@@ -33,6 +35,8 @@
3335
Лог.Информация("Начинаю сборку в каталоге " + РабочийКаталог);
3436
УстановитьТекущийКаталог(РабочийКаталог);
3537
УточнитьФайлМанифеста(ФайлМанифеста);
38+
ИнициализироватьОбработчикСобытийСборки();
39+
ВызватьСобытиеПередСборкой();
3640
Манифест = ПрочитатьМанифест(ФайлМанифеста);
3741
СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог);
3842
УстановитьТекущийКаталог(ТекущийРабКаталог);
@@ -66,6 +70,19 @@
6670

6771
КонецПроцедуры
6872

73+
Процедура ИнициализироватьОбработчикСобытийСборки()
74+
ОбработчикСобытийСборки = Неопределено;
75+
ИмяСкриптаСборки = КонстантыOpm.ИмяФайлаСкриптаСборки;
76+
77+
ПутьКФайлуСборки = ОбъединитьПути(ТекущийКаталог(), ИмяСкриптаСборки);
78+
Если НЕ ФС.ФайлСуществует(ПутьКФайлуСборки) Тогда
79+
Возврат;
80+
КонецЕсли;
81+
82+
Лог.Отладка("Найден скрипт сборки пакета");
83+
ОбработчикСобытийСборки = ЗагрузитьСценарий(ПутьКФайлуСборки);
84+
КонецПроцедуры
85+
6986
Функция ПрочитатьМанифест(Знач ФайлМанифеста)
7087

7188
ОписаниеПакета = Новый ОписаниеПакета();
@@ -93,6 +110,8 @@
93110

94111
Архив.Записать();
95112

113+
ВызватьСобытиеПослеСборки(ФайлАрхива.ПолноеИмя);
114+
96115
Лог.Информация("Создана сборка %1", ФайлАрхива.ПолноеИмя);
97116

98117
КонецПроцедуры
@@ -174,12 +193,50 @@
174193
АрхивЦелевойСистемы.Добавить(ПолныйПуть, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
175194
КонецЦикла;
176195

196+
ВызватьСобытиеПриСборке(АрхивЦелевойСистемы);
197+
177198
АрхивЦелевойСистемы.Записать();
178199

179200
Архив.Добавить(ПутьАрхиваЦелевойСистемы, РежимСохраненияПутейZIP.НеСохранятьПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
180201

181202
КонецПроцедуры
182203

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+
183240
////////////////////////////////////////////////////////
184241
// Подготовка пустого каталога под новый пакет
185242

@@ -208,6 +265,8 @@
208265
СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "docs");
209266

210267
ЗаписатьЗаготовкуСкриптаУстановки(ВыходнойКаталог.ПолноеИмя);
268+
ЗаписатьЗаготовкуСкриптаСборки(ВыходнойКаталог.ПолноеИмя);
269+
211270
ЗаписатьЗаготовкуМанифестаБиблиотеки(ВыходнойКаталог.ПолноеИмя, ИмяПакета);
212271

213272
Лог.Информация("Готово");
@@ -265,6 +324,56 @@
265324

266325
КонецПроцедуры
267326

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+
268377
Процедура ЗаписатьЗаготовкуМанифестаБиблиотеки(Знач Каталог, Знач ИмяПакета)
269378

270379
Лог.Информация("Создаю заготовку описания пакета");

src/Модули/КонстантыOpm.os

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
Перем ИмяФайлаСпецификацииПакета Экспорт;
33
Перем ИмяФайлаСкриптаУстановки Экспорт;
4+
Перем ИмяФайлаСкриптаСборки Экспорт;
45
Перем ИмяФайлаСодержимогоПакета Экспорт;
56
Перем ИмяФайлаМетаданныхПакета Экспорт;
67
Перем СерверУдаленногоХранилища Экспорт;
@@ -16,6 +17,7 @@
1617

1718
ИмяФайлаСпецификацииПакета = "packagedef";
1819
ИмяФайлаСкриптаУстановки = "_install_.os";
20+
ИмяФайлаСкриптаСборки = "_build_.os";
1921
ИмяФайлаСодержимогоПакета = "content.zip";
2022
ИмяФайлаМетаданныхПакета = "opm-metadata.xml";
2123
СерверУдаленногоХранилища = "http://hub.oscript.io";
@@ -24,5 +26,5 @@
2426
ПутьВЗапасномХранилище = "/download/";
2527
ЛокальныйКаталогУстановкиПакетов = "oscript_modules";
2628
ИмяЛога = "oscript.app.opm";
27-
ВерсияПродукта = "0.9.8";
29+
ВерсияПродукта = "0.10.0";
2830
ИмяФайлаНастроек = "opm.cfg";

0 commit comments

Comments
 (0)