forked from vanessa-opensource/add
-
Notifications
You must be signed in to change notification settings - Fork 0
/
packagedef
207 lines (166 loc) · 11.4 KB
/
packagedef
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
#Использовать fs
#Использовать asserts
Перем ВерсияПакета;
////////////////////////////////////////////////////////////
// Описание пакета для сборки и установки
// Полную документацию см. на hub.oscript.io/packaging
//
///////////////////////////////////////////////////////////////////
// Процедуры установки пакета с клиентской машины
///////////////////////////////////////////////////////////////////
// Вызывается пакетным менеджером перед установкой пакета на клиентскую машину.
//
// Параметры:
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
// ЧтениеZipФайла - ЧтениеZipФайла. Архив пакета.
//
Процедура ПередУстановкой(Знач КаталогУстановкиПакета, Знач ЧтениеZipФайла) Экспорт
Сообщить("Перед установкой удаляю все epf-файлы из каталога пакета " + КаталогУстановкиПакета);
МассивФайлов = НайтиФайлы(КаталогУстановкиПакета, "*.epf", Истина);
Для каждого Файл Из МассивФайлов Цикл
УдалитьФайлы(Файл.ПолноеИмя);
КонецЦикла;
КонецПроцедуры
// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.
//
// Параметры:
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
//
Процедура ПриУстановке(Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт
КонецПроцедуры
///////////////////////////////////////////////////////////////////
// Процедуры сборки пакета
///////////////////////////////////////////////////////////////////
// Вызывается пакетным менеджером перед началом сборки пакета.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
//
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
КонецПроцедуры
// Вызывается пакетным менеджером после помещения файлов в пакет.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
// АрхивПакета - ЗаписьZIPФайла - ZIP-архив с содержимым пакета (включаемые файлы).
//
Процедура ПриСборке(Знач РабочийКаталог, Знач АрхивПакета) Экспорт
Исходники = ЗагрузитьСценарий("tasks/Модули/Исходники.os");
СлужебныйКаталог = ".forbuild";
КлючМассиваПутей = "opm_build";
КлючМассиваИсключаемыхПутей = "opm_build_exclude";
//ФС.ОбеспечитьПустойКаталог(СлужебныйКаталог);
СтрокаЗапуска = Исходники.СтрокаЗапускаКомандыСборки(Ложь, СлужебныйКаталог);
СтрокаЗапуска = СтрШаблон("%1 --key %2", СтрокаЗапуска, КлючМассиваПутей);
СтрокаЗапуска = СтрШаблон("%1 --cachekey %2", СтрокаЗапуска, КлючМассиваПутей);
Исходники.ИсполнитьКоманду(СтрокаЗапуска);
КаталогСборки = СтрШаблон("./%1/", СлужебныйКаталог);
СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib/TemplateEpf %1lib/TemplateEpf --onlycopy --ibname /F./build/ibservice", КаталогСборки);
Исходники.ИсполнитьКоманду(СтрокаЗапуска);
СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./lib/TemplateEpfUF %1lib/TemplateEpfUF --onlycopy --ibname /F./build/ibservice", КаталогСборки);
Исходники.ИсполнитьКоманду(СтрокаЗапуска);
СтрокаЗапуска = СтрШаблон("oscript ./tools/runner.os compileepf ./locales %1locales --onlycopy --ibname /F./build/ibservice", КаталогСборки);
Исходники.ИсполнитьКоманду(СтрокаЗапуска);
Настройки = Исходники.ПолучитьИзJSONФайла(Исходники.ПутьФайлаНастроек());
Ожидаем.Что(Настройки, "Не загружены настройки из файла настроек").Заполнено();
МассивПутей = Настройки[КлючМассиваПутей];
Ожидаем.Что(МассивПутей, "Не найдена настройка " + КлючМассиваПутей).Заполнено();
ТекущийКаталогСохр = ТекущийКаталог();
УстановитьТекущийКаталог(СлужебныйКаталог);
МассивИсключаемыхПутей = Настройки[КлючМассиваИсключаемыхПутей];
Ожидаем.Что(МассивИсключаемыхПутей, "Не найдена настройка " + КлючМассиваИсключаемыхПутей).Заполнено();
Попытка
Для каждого Путь Из МассивИсключаемыхПутей Цикл
ФайлПути = Новый Файл(Путь);
Если ФайлПути.Существует() Тогда
Если ФайлПути.ЭтоКаталог() Тогда
УдалитьФайлы(Путь, "*.*");
Иначе
УдалитьФайлы(Путь);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Для каждого Путь Из МассивПутей Цикл
АрхивПакета.Добавить(Путь,
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
КонецЦикла;
МассивОбработок = НайтиФайлы(".", "*.epf");
Для каждого Файл Из МассивОбработок Цикл
Путь = Файл.Имя;
АрхивПакета.Добавить(Путь,
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
КонецЦикла;
Исключение
УстановитьТекущийКаталог(ТекущийКаталогСохр);
ВызватьИсключение;
КонецПопытки;
УстановитьТекущийКаталог(ТекущийКаталогСохр);
КонецПроцедуры
// Вызывается пакетным менеджером после сборки пакета.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
// ПутьКФайлуПакета - Строка - Полный путь к собранному файлу пакета.
//
Процедура ПослеСборки(Знач РабочийКаталог, Знач ПутьКФайлуПакета) Экспорт
Файл = Новый Файл(ОбъединитьПути(РабочийКаталог, "content.zip"));
Если Файл.Существует() Тогда
УдалитьФайлы(Файл.ПолноеИмя);
КонецЕсли;
ФайлКонечный = Новый Файл(ОбъединитьПути(РабочийКаталог, СтрШаблон("add-%1.zip", ВерсияПакета)));
Если ФайлКонечный.Существует() Тогда
УдалитьФайлы(ФайлКонечный.ПолноеИмя);
КонецЕсли;
АрхивПакета = Новый ЧтениеZipФайла(ПутьКФайлуПакета);
Элемент = АрхивПакета.Элементы.Найти(Файл.Имя);
Ожидаем.Что(Элемент, "Не сформирован файл " + ФайлКонечный.ПолноеИмя)
.ЭтоНе().Равно(Неопределено);
АрхивПакета.Извлечь(Элемент, РабочийКаталог);
ПереместитьФайл(Файл.ПолноеИмя, ФайлКонечный.ПолноеИмя);
Ожидаем.Что(ФайлКонечный.Существует(), "Не сформирован файл " + ФайлКонечный.ПолноеИмя)
.ЭтоИстина();
Сообщить("ИНФОРМАЦИЯ - Создан файл релиза " + ФайлКонечный.ПолноеИмя);
КонецПроцедуры
ВерсияПакета = "6.9.5";
Описание.Имя("add")
.Версия(ВерсияПакета)
.Автор("Vanessa-OpenSource")
.Описание("Сборка Vanessa-ADD")
.ВерсияСреды("1.0.20")
// автоматически собираются все файлы из файла "ospx/settings.json" + корневые обработки
.ВключитьФайл("doc")
.ВключитьФайл("lib/TemplateEpfUF")
.ВключитьФайл("lib/TemplateEpf")
.ВключитьФайл("license")
.ВключитьФайл("licenses")
.ВключитьФайл("locales")
.ВключитьФайл("tasks")
.ВключитьФайл("ospx")
.ВключитьФайл("packagedef")
.ВключитьФайл("readme.md")
.ВключитьФайл("f.a.q.md")
.ВключитьФайл("MakeAutoVideo.md")
.ВключитьФайл("notice")
.ВключитьФайл("history")
.ВключитьФайл("tools/json")
.ВключитьФайл("tools/VideoTools")
.ВключитьФайл("tools/onescript")
.ЗависитОт("asserts")
.ЗависитОт("1commands", "1.3.0")
.ЗависитОт("logos", "0.6.2")
.ЗависитОт("cmdline", "0.6.2")
.ЗависитОт("tempfiles", "0.2.1")
.ЗависитОт("v8runner", "0.11.2")
.ЗависитОт("v8unpack", "1.0.1")
.ЗависитОт("fs", "1.0.0")
.РазработкаЗависитОт("1bdd")
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("coverage")
.РазработкаЗависитОт("1commands")
.РазработкаЗависитОт("fs")
// .РазработкаЗависитОт("add")
.ОпределяетМодуль("add", "ospx/addospx.os")
;