-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathpackagedef
109 lines (85 loc) · 5.87 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
#Использовать 1commands
#Использовать fs
// Вызывается пакетным менеджером перед началом сборки пакета.
//
// Параметры:
// РабочийКаталог - Строка - Текущий рабочий каталог с исходниками пакета.
//
Процедура ПередСборкой(Знач РабочийКаталог) Экспорт
СобратьБиблиотекуDotNET();
ПодготовитьКаталогСКомпонентами();
ПроверитьНаличиеБиблиотекиDotNET();
КонецПроцедуры
Процедура СобратьБиблиотекуDotNET()
КаталогРелиза = ОбъединитьПути(ТекущийКаталог(), "oscript-compressor/bin/Release");
ФС.ОбеспечитьПустойКаталог(КаталогРелиза);
Команда = Новый Команда;
Команда.УстановитьСтрокуЗапуска("dotnet build oscript-compressor -c Release");
Команда.ПоказыватьВыводНемедленно(Истина);
Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
КодВозврата = Команда.Исполнить();
Если Не КодВозврата = 0 Тогда
ВызватьИсключение "Не удалось выполнить сборку .NET библиотеки";
КонецЕсли;
КонецПроцедуры
Процедура ПодготовитьКаталогСКомпонентами()
СоответствиеПапок = Новый Соответствие();
СоответствиеПапок.Вставить("net4", "net48");
СоответствиеПапок.Вставить("dotnet", "net6.0");
ПомещаемыеРесурсы = Новый Массив();
ПомещаемыеРесурсы.Добавить("1script_compressor.dll");
ПомещаемыеРесурсы.Добавить("EasyCompressor.dll");
ПомещаемыеРесурсы.Добавить("EasyCompressor.Snappier.dll");
ПомещаемыеРесурсы.Добавить("EasyCompressor.LZ4.dll");
ПомещаемыеРесурсы.Добавить("EasyCompressor.ZstdSharp.dll");
ПомещаемыеРесурсы.Добавить("BrotliSharpLib.dll");
ПомещаемыеРесурсы.Добавить("Snappier.dll");
ПомещаемыеРесурсы.Добавить("ZstdSharp.dll");
ПомещаемыеРесурсы.Добавить("K4os.Compression.LZ4.dll");
ПомещаемыеРесурсы.Добавить("K4os.Compression.LZ4.Streams.dll");
ПомещаемыеРесурсы.Добавить("K4os.Hash.xxHash.dll");
ПомещаемыеРесурсы.Добавить("System.Memory.dll");
ПомещаемыеРесурсы.Добавить("System.Buffers.dll");
ПомещаемыеРесурсы.Добавить("System.Runtime.CompilerServices.Unsafe.dll");
ПомещаемыеРесурсы.Добавить("System.Threading.Tasks.Extensions.dll");
КаталогСКомпонентами = ОбъединитьПути(ТекущийКаталог(), "Components");
ФС.ОбеспечитьПустойКаталог(КаталогСКомпонентами);
Для Каждого Соответствие Из СоответствиеПапок Цикл
ИмяКаталогаOscript = Соответствие.Ключ;
ИмяКаталогаDotnet = Соответствие.Значение;
ПутьККаталгуOscript = ОбъединитьПути(КаталогСКомпонентами, ИмяКаталогаOscript);
ПутьККаталгуDotnet = ОбъединитьПути(ТекущийКаталог(), "oscript-compressor/bin/Release", ИмяКаталогаDotnet);
ФС.ОбеспечитьПустойКаталог(ПутьККаталгуOscript);
Для Каждого ИмяРесурса Из ПомещаемыеРесурсы Цикл
ПутьИсточник = ОбъединитьПути(ПутьККаталгуDotnet, ИмяРесурса);
ПутьПриемник = ОбъединитьПути(ПутьККаталгуOscript, ИмяРесурса);
Если ФС.ФайлСуществует(ПутьИсточник) Тогда
ПереместитьФайл(ПутьИсточник, ПутьПриемник);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьНаличиеБиблиотекиDotNET()
ИмяФайла = "1script_compressor.dll";
Для Каждого ИмяПапки Из СтрРазделить("net4,dotnet", ",") Цикл
ПутьКФайлу = ОбъединитьПути(ТекущийКаталог(), "Components", ИмяПапки, ИмяФайла);
Если Не ФС.ФайлСуществует(ПутьКФайлу) Тогда
ВызватьИсключение СтрШаблон("Отсутсвует .NET библиотека %1 в папке Components/%2", ИмяФайла, ИмяПапки);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Описание
.Имя("compressor")
.Версия("1.0.0")
.Автор("Dmitry Ivanov")
.АдресАвтора("https://github.com/Stivo182")
.Описание("Библиотека сжатия данных, включающая алгоритмы LZ4, Snappy, Zstd, Brotli, GZip, ZLib и Deflate")
.ВерсияСреды("1.9.2")
.ВключитьФайл("Components")
.ВключитьФайл("docs")
.ВключитьФайл("package-loader.os")
.ВключитьФайл("README.md")
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("1commands")
.РазработкаЗависитОт("fs")