forked from oscript-library/opm
-
Notifications
You must be signed in to change notification settings - Fork 0
/
packagedef
112 lines (93 loc) · 7.15 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
////////////////////////////////////////////////////////////
// Описание пакета для сборки и установки
// Полную документацию см. на hub.oscript.io/packaging
//
///////////////////////////////////////////////////////////////////
// Процедуры установки пакета с клиентской машины
///////////////////////////////////////////////////////////////////
// Вызывается пакетным менеджером перед установкой пакета на клиентскую машину.
//
// Параметры:
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
// ЧтениеZipФайла - ЧтениеZipФайла. Архив пакета.
//
Процедура ПередУстановкой(Знач КаталогУстановкиПакета, Знач ЧтениеZipФайла) Экспорт
КонецПроцедуры
// Вызывается пакетным менеджером после распаковки пакета на клиентскую машину.
//
// Параметры:
// КаталогУстановкиПакета - строка. Путь в который пакетный менеджер устанавливает текущий пакет.
//
Процедура ПриУстановке(Знач КаталогУстановкиПакета, СтандартнаяОбработка) Экспорт
КонецПроцедуры
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
КаталогМодулей = ОбъединитьПути(РабочийКаталог, "oscript_modules");
УдалитьФайлы(КаталогМодулей, ПолучитьМаскуВсеФайлы());
СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;
Если ЭтоWindows Тогда
ИмяУтилиты = "opm.bat";
Иначе
ИмяУтилиты = "opm";
КонецЕсли;
СтрокаЗапуска = СтрШаблон("%1 install -l", ИмяУтилиты);
ВыполнитьОбязательныйШаг(СтрокаЗапуска, РабочийКаталог);
СобираемаяВерсия = Описание.Свойства().Версия;
Если СобираемаяВерсия = "0.14.4" Тогда
УдалитьФайлы(ОбъединитьПути(КаталогМодулей, "gitrunner"));
СтрокаЗапуска = "oscript src/cmd/opm.os install -l";
ВыполнитьОбязательныйШаг(СтрокаЗапуска, РабочийКаталог);
// Подчищаем за 1bdd
// TODO: сделать зависимости этапа разработки
УдалитьФайлы(ОбъединитьПути(КаталогМодулей, "bin"));
УдалитьФайлы(ОбъединитьПути(КаталогМодулей, "1bdd"));
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьОбязательныйШаг(Знач СтрокаЗапуска, Знач РабочийКаталог)
Процесс = СоздатьПроцесс(СтрокаЗапуска, РабочийКаталог);
Процесс.Запустить();
Процесс.ОжидатьЗавершения();
Если Процесс.КодВозврата <> 0 Тогда
ВызватьИсключение "Ошибка сборки пакета";
КонецЕсли;
КонецПроцедуры
ПутьКСценариюКонстант = ОбъединитьПути(ТекущийСценарий().Каталог, "src/core", "Модули", "КонстантыOpm.os");
// специальная заглушка для правильной компиляции packagedef при первых действий при установке пакета,
// когда еще не извлечено никаких файлов пакет
ФайлКонстант = Новый Файл(ПутьКСценариюКонстант);
Если ФайлКонстант.Существует() Тогда
Константы_ЛокальнаяВерсия = ЗагрузитьСценарий(ПутьКСценариюКонстант);
ВерсияПродукта = Константы_ЛокальнаяВерсия.ВерсияПродукта;
Иначе
ВерсияПродукта = "1.0.3";
КонецЕсли;
Описание.Имя("opm")
.Версия(ВерсияПродукта)
.ВерсияСреды("1.0.19")
.ЗависитОт("fs", "1.1.0")
.ЗависитОт("asserts", "1.3.0")
.ЗависитОт("json", "1.1.1")
.ЗависитОт("fluent", "0.4.0")
.ЗависитОт("logos", "1.3.0")
.ЗависитОт("cli", "0.9.10")
.ЗависитОт("tempfiles", "1.0.0")
.ЗависитОт("gitrunner", "1.6.2")
.ВключитьФайл("packagedef")
.ВключитьФайл("src")
.ВключитьФайл("tasks")
.ВключитьФайл("oscript_modules")
.ОпределяетКласс("КэшУстановленныхПакетов", "src/core/Классы/КэшУстановленныхПакетов.os")
.ОпределяетКласс("МенеджерПолученияПакетов", "src/core/Классы/МенеджерПолученияПакетов.os")
.ОпределяетКласс("МенеджерУстановкиПакетов", "src/core/Классы/МенеджерУстановкиПакетов.os")
.ОпределяетКласс("ОписаниеПакета", "src/core/Классы/ОписаниеПакета.os")
.ОпределяетКласс("СборщикПакета", "src/core/Классы/СборщикПакета.os")
.ОпределяетКласс("СерверПакетов", "src/core/Классы/СерверПакетов.os")
.ОпределяетКласс("СериализацияМетаданныхПакета", "src/core/Классы/СериализацияМетаданныхПакета.os")
.ОпределяетКласс("УстановкаПакета", "src/core/Классы/УстановкаПакета.os")
.ОпределяетМодуль("КонстантыOpm", "src/core/Модули/КонстантыOpm.os")
.ОпределяетМодуль("НастройкиOpm", "src/core/Модули/НастройкиOpm.os")
.ОпределяетМодуль("РаботаСВерсиями", "src/core/Модули/РаботаСВерсиями.os")
.ОпределяетМодуль("РаботаСОписаниемПакета", "src/core/Модули/РаботаСОписаниемПакета.os")
.ОпределяетМодуль("РаботаСПакетами", "src/core/Модули/РаботаСПакетами.os")
.ОпределяетМодуль("РежимУстановкиПакетов", "src/core/Модули/РежимУстановкиПакетов.os")
.ИсполняемыйФайл("src/cmd/opm.os");