Skip to content

Commit d1e2588

Browse files
committed
Добавил создание каталоге tasks и features #125
Добавил копирование файла tasks\test.os Увеличил номер версии движка до текущего релиза 1.0.21
1 parent b0ae438 commit d1e2588

File tree

1 file changed

+92
-72
lines changed

1 file changed

+92
-72
lines changed

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

Lines changed: 92 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@
2121

2222
РабочийКаталог = КаталогИсходников;
2323
ТекущийРабКаталог = ТекущийКаталог();
24-
24+
2525
Попытка
26-
26+
2727
Если ВыходнойКаталог = Неопределено Тогда
2828
ВыходнойКаталог = ТекущийКаталог();
2929
Иначе
3030
// получим полное имя, если вдруг передан относительный путь
3131
ФайлВыхКаталога = Новый Файл(ВыходнойКаталог);
3232
ВыходнойКаталог = ФайлВыхКаталога.ПолноеИмя;
3333
КонецЕсли;
34-
34+
3535
Лог.Информация("Начинаю сборку в каталоге " + РабочийКаталог);
3636
УстановитьТекущийКаталог(РабочийКаталог);
3737
УточнитьФайлМанифеста(ФайлМанифеста);
@@ -40,22 +40,22 @@
4040
СобратьПакетВКаталогеСборки(Манифест, ВыходнойКаталог);
4141
УстановитьТекущийКаталог(ТекущийРабКаталог);
4242
Лог.Информация("Сборка пакета завершена");
43-
43+
4444
Исключение
4545
УстановитьТекущийКаталог(ТекущийРабКаталог);
4646
ВременныеФайлы.Удалить();
4747
ВызватьИсключение;
48-
48+
4949
КонецПопытки;
5050

5151
ВременныеФайлы.Удалить();
52-
52+
5353
КонецПроцедуры
5454

5555
Процедура УточнитьФайлМанифеста(ФайлМанифеста)
56-
56+
5757
Если ФайлМанифеста = Неопределено Тогда
58-
58+
5959
ФайлОбъект = Новый Файл(КонстантыOpm.ИмяФайлаСпецификацииПакета);
6060
Если ФайлОбъект.Существует() и ФайлОбъект.ЭтоФайл() Тогда
6161
Лог.Информация("Найден файл манифеста");
@@ -66,125 +66,125 @@
6666
Иначе
6767
Лог.Информация("Использую файл манифеста " + ФайлМанифеста);
6868
КонецЕсли;
69-
69+
7070
КонецПроцедуры
7171

7272
Функция ПрочитатьМанифест(Знач ФайлМанифеста)
73-
73+
7474
ОписаниеПакета = Новый ОписаниеПакета();
7575
Лог.Информация("Загружаю описание пакета...");
7676
ВнешнийКонтекст = Новый Структура("Описание", ОписаниеПакета);
7777
ОбработчикСобытий = ЗагрузитьСценарий(ФайлМанифеста, ВнешнийКонтекст);
7878
Лог.Информация("Описание пакета прочитано");
79-
79+
8080
Возврат ОписаниеПакета;
81-
81+
8282
КонецФункции
8383

8484
Процедура СобратьПакетВКаталогеСборки(Знач Манифест, Знач ВыходнойКаталог)
85-
85+
8686
ВремКаталогСборки = ВременныеФайлы.СоздатьКаталог();
87-
87+
8888
СвойстваПакета = Манифест.Свойства();
89-
89+
9090
ИмяФайлаПакета = СтрШаблон("%1-%2.ospx", СвойстваПакета.Имя, СвойстваПакета.Версия);
9191
ФайлАрхива = Новый Файл(ОбъединитьПути(ВыходнойКаталог, ИмяФайлаПакета));
9292
Архив = Новый ЗаписьZIPФайла(ФайлАрхива.ПолноеИмя);
93-
93+
9494
ДобавитьОписаниеМетаданныхПакета(Архив, Манифест);
9595
ДобавитьФайлыПакета(Архив, Манифест);
96-
96+
9797
Архив.Записать();
9898

9999
ВызватьСобытиеПослеСборки(ФайлАрхива.ПолноеИмя);
100100

101101
Лог.Информация("Создана сборка %1", ФайлАрхива.ПолноеИмя);
102-
102+
103103
КонецПроцедуры
104104

105105
Процедура ДобавитьОписаниеМетаданныхПакета(Знач Архив, Знач Манифест)
106-
106+
107107
ПутьМанифеста = ОбъединитьПути(ВремКаталогСборки, "opm-metadata.xml");
108108
Запись = Новый ЗаписьXML;
109109
Запись.ОткрытьФайл(ПутьМанифеста);
110-
110+
111111
Сериализатор = Новый СериализацияМетаданныхПакета();
112112
Сериализатор.ЗаписатьМетаданныеВXML(Запись, Манифест);
113-
113+
114114
Запись.Закрыть();
115-
115+
116116
Архив.Добавить(ПутьМанифеста);
117117
Лог.Информация("Записаны метаданные пакета");
118-
118+
119119
КонецПроцедуры
120120

121121
Процедура ДобавитьОписаниеБиблиотеки(Знач Архив, Знач Манифест)
122-
122+
123123
Модули = Манифест.ВсеМодулиПакета();
124124
Если Модули.Количество() = 0 Тогда
125125
Возврат;
126126
КонецЕсли;
127-
127+
128128
Лог.Информация("Формирую определения модулей пакета (lib.config)");
129-
129+
130130
ПутьКонфигурацииПакета = ОбъединитьПути(ВремКаталогСборки, "lib.config");
131131
Запись = Новый ЗаписьXML;
132132
Запись.ОткрытьФайл(ПутьКонфигурацииПакета);
133133
Запись.ЗаписатьОбъявлениеXML();
134134
Запись.ЗаписатьНачалоЭлемента("package-def");
135135
Запись.ЗаписатьСоответствиеПространстваИмен("", "http://oscript.io/schemas/lib-config/1.0");
136-
136+
137137
Для Каждого ОписаниеМодуля Из Модули Цикл
138138
Если ОписаниеМодуля.Тип = Манифест.ТипыМодулей.Класс Тогда
139139
Запись.ЗаписатьНачалоЭлемента("class");
140140
Иначе
141141
Запись.ЗаписатьНачалоЭлемента("module");
142142
КонецЕсли;
143-
143+
144144
ФайлМодуля = Новый Файл(ОписаниеМодуля.Файл);
145145
Если Не ФайлМодуля.Существует() Тогда
146146
Лог.Предупреждение("Файл модуля " + ОписаниеМодуля.Файл + " не обнаружен.");
147147
КонецЕсли;
148-
148+
149149
Запись.ЗаписатьАтрибут("name", ОписаниеМодуля.Идентификатор);
150150
Запись.ЗаписатьАтрибут("file", ОписаниеМодуля.Файл);
151151
Запись.ЗаписатьКонецЭлемента();
152-
152+
153153
КонецЦикла;
154-
154+
155155
Запись.ЗаписатьКонецЭлемента();
156156
Запись.Закрыть();
157-
157+
158158
Архив.Добавить(ПутьКонфигурацииПакета);
159159
Лог.Информация("Записаны определения модулей пакета");
160-
160+
161161
КонецПроцедуры
162162

163163
Процедура ДобавитьФайлыПакета(Знач Архив, Знач Манифест)
164-
164+
165165
ВключаемыеФайлы = Манифест.ВключаемыеФайлы();
166166
Если ВключаемыеФайлы.Количество() = 0 Тогда
167167
Лог.Информация("Не определены включаемые файлы");
168168
Возврат;
169169
КонецЕсли;
170-
170+
171171
ПутьАрхиваЦелевойСистемы = ОбъединитьПути(ВремКаталогСборки, "content.zip");
172172
АрхивЦелевойСистемы = Новый ЗаписьZIPФайла(ПутьАрхиваЦелевойСистемы);
173-
173+
174174
ДобавитьОписаниеБиблиотеки(АрхивЦелевойСистемы, Манифест);
175-
175+
176176
Для Каждого ВключаемыйФайл Из ВключаемыеФайлы Цикл
177177
Лог.Информация("Добавляем файл: " + ВключаемыйФайл);
178178
ПолныйПуть = Новый Файл(ВключаемыйФайл).ПолноеИмя;
179179
АрхивЦелевойСистемы.Добавить(ПолныйПуть, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
180180
КонецЦикла;
181-
181+
182182
ВызватьСобытиеПриСборке(АрхивЦелевойСистемы);
183-
183+
184184
АрхивЦелевойСистемы.Записать();
185-
185+
186186
Архив.Добавить(ПутьАрхиваЦелевойСистемы, РежимСохраненияПутейZIP.НеСохранятьПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
187-
187+
188188
КонецПроцедуры
189189

190190
Процедура ВызватьСобытиеПередСборкой()
@@ -215,33 +215,38 @@
215215
// Подготовка пустого каталога под новый пакет
216216

217217
Процедура ПодготовитьКаталогПроекта(Знач ВыходнойКаталог) Экспорт
218-
218+
219219
Если ВыходнойКаталог = Неопределено Тогда
220220
ВыходнойКаталог = ТекущийКаталог();
221221
КонецЕсли;
222222

223223
ВыходнойКаталог = Новый Файл(ВыходнойКаталог);
224-
224+
225225
ИмяПакета = ВыходнойКаталог.Имя;
226+
ПутьВыходногоКаталога = ВыходнойКаталог.ПолноеИмя;
226227

227228
Если Не ВыходнойКаталог.Существует() Тогда
228229
Лог.Информация("Создаю каталог " + ИмяПакета);
229-
СоздатьКаталог(ВыходнойКаталог.ПолноеИмя);
230+
СоздатьКаталог(ПутьВыходногоКаталога);
230231
Иначе
231-
Содержимое = НайтиФайлы(ВыходнойКаталог.ПолноеИмя, ПолучитьМаскуВсеФайлы());
232+
Содержимое = НайтиФайлы(ПутьВыходногоКаталога, ПолучитьМаскуВсеФайлы());
232233
Если Содержимое.Количество() Тогда
233-
ВызватьИсключение "Каталог проекта " + ВыходнойКаталог.ПолноеИмя + " уже содержит файлы!";
234+
ВызватьИсключение "Каталог проекта " + ПутьВыходногоКаталога + " уже содержит файлы!";
234235
КонецЕсли;
235236
КонецЕсли;
236-
237-
СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "src");
238-
СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "tests");
239-
СоздатьПодкаталог(ВыходнойКаталог.ПолноеИмя, "docs");
240-
241-
ЗаписатьЗаготовкуМанифестаБиблиотеки(ВыходнойКаталог.ПолноеИмя, ИмяПакета);
237+
238+
СоздатьПодкаталог(ПутьВыходногоКаталога, "src");
239+
СоздатьПодкаталог(ПутьВыходногоКаталога, "tests");
240+
СоздатьПодкаталог(ПутьВыходногоКаталога, "docs");
241+
СоздатьПодкаталог(ПутьВыходногоКаталога, "tasks");
242+
СоздатьПодкаталог(ПутьВыходногоКаталога, "features");
243+
244+
ПодготовитьФайлКомандыТестирования(ВыходнойКаталог);
245+
246+
ЗаписатьЗаготовкуМанифестаБиблиотеки(ПутьВыходногоКаталога, ИмяПакета);
242247

243248
Лог.Информация("Готово");
244-
249+
245250
КонецПроцедуры
246251

247252
Процедура СоздатьПодкаталог(Знач База, Знач Имя)
@@ -258,7 +263,7 @@
258263
ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////
259264
|
260265
|");
261-
266+
262267
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером перед установкой пакета на клиентскую машину.");
263268
ЗаписьТекста.ЗаписатьСтроку("// ");
264269
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
@@ -269,7 +274,7 @@
269274
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику перед установкой, если требуется");
270275
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
271276
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
272-
277+
273278
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.");
274279
ЗаписьТекста.ЗаписатьСтроку("// ");
275280
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
@@ -280,19 +285,19 @@
280285
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику установки, если требуется");
281286
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
282287
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
283-
288+
284289
КонецПроцедуры
285290

286291
Процедура ЗаписатьЗаготовкуСкриптаСборки(Знач ЗаписьТекста)
287-
292+
288293
Лог.Информация("Создаю заготовку процедур сборки");
289-
294+
290295
ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////");
291296
ЗаписьТекста.ЗаписатьСтроку("// Процедуры сборки пакета ");
292297
ЗаписьТекста.ЗаписатьСтроку("///////////////////////////////////////////////////////////////////
293298
|
294299
|");
295-
300+
296301
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером перед началом сборки пакета.");
297302
ЗаписьТекста.ЗаписатьСтроку("// ");
298303
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
@@ -302,7 +307,7 @@
302307
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется");
303308
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
304309
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
305-
310+
306311
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после помещения файлов в пакет.");
307312
ЗаписьТекста.ЗаписатьСтроку("// ");
308313
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
@@ -316,7 +321,7 @@
316321
| // РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);");
317322
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
318323
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
319-
324+
320325
ЗаписьТекста.ЗаписатьСтроку("// Вызывается пакетным менеджером после сборки пакета.");
321326
ЗаписьТекста.ЗаписатьСтроку("// ");
322327
ЗаписьТекста.ЗаписатьСтроку("// Параметры:");
@@ -327,21 +332,21 @@
327332
ЗаписьТекста.ЗаписатьСтроку(" // TODO: Реализуйте спец. логику сборки, если требуется");
328333
ЗаписьТекста.ЗаписатьСтроку("КонецПроцедуры");
329334
ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
330-
335+
331336
КонецПроцедуры
332337

333338
Процедура ЗаписатьЗаготовкуМанифестаБиблиотеки(Знач Каталог, Знач ИмяПакета)
334-
339+
335340
Лог.Информация("Создаю заготовку описания пакета");
336-
341+
337342
ЗаписьТекста = Новый ЗаписьТекста(ОбъединитьПути(Каталог, КонстантыOpm.ИмяФайлаСпецификацииПакета));
338-
343+
339344
ЗаписьТекста.ЗаписатьСтроку("////////////////////////////////////////////////////////////");
340345
ЗаписьТекста.ЗаписатьСтроку("// Описание пакета для сборки и установки");
341346
ЗаписьТекста.ЗаписатьСтроку("// Полную документацию см. на hub.oscript.io/packaging");
342347
ЗаписьТекста.ЗаписатьСтроку("//");
343348
ЗаписьТекста.ЗаписатьСтроку("");
344-
349+
345350
Консоль = Новый Консоль;
346351
ДобавлятьПроцедурыПереопределения = Неопределено;
347352
Лог.Информация("Добавить в описание пакета процедуры переопределения сборки и установки?");
@@ -364,29 +369,44 @@
364369

365370
ЗаписьТекста.ЗаписатьСтроку("
366371
|Описание.Имя(""" + ИмяПакета + """)
367-
| .Версия(""1.0.1"")
372+
| .Версия(""1.0.0"")
368373
| .Автор("""")
369374
| .АдресАвтора(""author@somemail.com"")
370375
| .Описание(""Это очень хороший и нужный пакет программ"")
371-
| .ВерсияСреды(""1.0.11"")
376+
| .ВерсияСреды(""1.0.21"")
372377
| .ВключитьФайл(""src"")
373378
| .ВключитьФайл(""doc"")
374-
| .ВключитьФайл(""tests"")");
379+
| .ВключитьФайл(""tasks"")
380+
| //.ВключитьФайл(""tests"")
381+
| //.ВключитьФайл(""features"")
382+
| ");
375383

376384
Если ДобавлятьПроцедурыПереопределения Тогда
377385
ЗаписьТекста.ЗаписатьСтроку(
378386
" .ВключитьФайл(""" + КонстантыOpm.ИмяФайлаСпецификацииПакета + """)");
379387
КонецЕсли;
380-
388+
381389
ЗаписьТекста.ЗаписатьСтроку(
382390
" //.ЗависитОт(""package1"", "">=2.0"")
383391
| //.ЗависитОт(""package2"", "">=1.1"", ""<2.0"")
384392
| //.ОпределяетКласс(""УправлениеВселенной"", ""src/universe-mngr.os"")
385393
| //.ОпределяетМодуль(""ПолезныеФункции"", ""src/tools.os"")
386394
| ;");
387-
395+
388396
ЗаписьТекста.Закрыть();
389-
397+
390398
КонецПроцедуры
391399

400+
Процедура ПодготовитьФайлКомандыТестирования(Знач ВыходнойКаталог)
401+
ИсходныйПутьЗапускателяТестов = ОбъединитьПути(КаталогПроекта(), "tasks", "test.os");
402+
КонечныйПутьЗапускателяТестов = ОбъединитьПути(ВыходнойКаталог.ПолноеИмя, "tasks", "test.os");
403+
КопироватьФайл(ИсходныйПутьЗапускателяТестов, КонечныйПутьЗапускателяТестов);
404+
КонецПроцедуры
405+
406+
Функция КаталогПроекта()
407+
Рез = ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", "..");
408+
Лог.Информация("Рез %1", Рез);
409+
Возврат ФС.ПолныйПуть(Рез);
410+
КонецФункции
411+
392412
Лог = Логирование.ПолучитьЛог(КонстантыOpm.ИмяЛога);

0 commit comments

Comments
 (0)