1
+
2
+ #Использовать 1commands
3
+ #Использовать fs
4
+
5
+ Процедура Подготовить () Экспорт
6
+
7
+ ИменаПроектов = Новый Массив();
8
+ ИменаПроектов.Добавить("OneScriptCompressor" );
9
+
10
+ ИменаФайловБиблиотек = Новый Соответствие();
11
+ ИменаФайловБиблиотек.Вставить("1script_compressor.dll" );
12
+
13
+ ИменаФайловБиблиотек.Вставить("EasyCompressor.dll" );
14
+ ИменаФайловБиблиотек.Вставить("EasyCompressor.Snappier.dll" );
15
+ ИменаФайловБиблиотек.Вставить("EasyCompressor.LZ4.dll" );
16
+ ИменаФайловБиблиотек.Вставить("EasyCompressor.ZstdSharp.dll" );
17
+
18
+ ИменаФайловБиблиотек.Вставить("BrotliSharpLib.dll" , "net4" );
19
+ ИменаФайловБиблиотек.Вставить("Snappier.dll" );
20
+ ИменаФайловБиблиотек.Вставить("ZstdSharp.dll" );
21
+ ИменаФайловБиблиотек.Вставить("K4os.Compression.LZ4.dll" );
22
+ ИменаФайловБиблиотек.Вставить("K4os.Compression.LZ4.Streams.dll" );
23
+ ИменаФайловБиблиотек.Вставить("K4os.Hash.xxHash.dll" );
24
+
25
+ ИменаФайловБиблиотек.Вставить("System.Memory.dll" , "net4" );
26
+ ИменаФайловБиблиотек.Вставить("System.Buffers.dll" , "net4" );
27
+ ИменаФайловБиблиотек.Вставить("System.Runtime.CompilerServices.Unsafe.dll" , "net4" );
28
+ ИменаФайловБиблиотек.Вставить("System.Threading.Tasks.Extensions.dll" , "net4" );
29
+
30
+ СобратьБиблиотекуDotNET(ИменаПроектов);
31
+ ПодготовитьКаталогСКомпонентами(ИменаПроектов, ИменаФайловБиблиотек);
32
+ ПроверитьНаличиеБиблиотекиDotNET(ИменаФайловБиблиотек);
33
+
34
+ КонецПроцедуры
35
+
36
+ Процедура СобратьБиблиотекуDotNET (ИменаПроектов )
37
+
38
+ Для Каждого ИмяПроекта Из ИменаПроектов Цикл
39
+
40
+ КаталогРелиза = ОбъединитьПути(ТекущийКаталог(), "src/" + ИмяПроекта + "/bin/Release" );
41
+ ФС.ОбеспечитьПустойКаталог(КаталогРелиза);
42
+
43
+ Команда = Новый Команда;
44
+ Команда.УстановитьСтрокуЗапуска(СтрШаблон ("dotnet build src/%1 -c Release" , ИмяПроекта));
45
+ Команда.ПоказыватьВыводНемедленно(Истина );
46
+ Команда.УстановитьКодировкуВывода(КодировкаТекста.UTF8);
47
+
48
+ КодВозврата = Команда.Исполнить();
49
+ Если Не КодВозврата = 0 Тогда
50
+ ВызватьИсключение "Не удалось выполнить сборку .NET библиотеки" ;
51
+ КонецЕсли ;
52
+
53
+ КонецЦикла ;
54
+
55
+ КонецПроцедуры
56
+
57
+ Процедура ПодготовитьКаталогСКомпонентами (ИменаПроектов , ИменаФайловБиблиотек )
58
+
59
+ СоответствиеПапок = Новый Соответствие();
60
+ СоответствиеПапок.Вставить("net4" , "net48" );
61
+ СоответствиеПапок.Вставить("dotnet" , "net6.0" );
62
+
63
+ КаталогСКомпонентами = ОбъединитьПути(ТекущийКаталог(), "Components" );
64
+
65
+ ФС.ОбеспечитьПустойКаталог(КаталогСКомпонентами);
66
+
67
+ Для Каждого Соответствие Из СоответствиеПапок Цикл
68
+ ИмяКаталогаOscript = Соответствие.Ключ;
69
+ ИмяКаталогаDotnet = Соответствие.Значение;
70
+
71
+ ПутьККаталгуOscript = ОбъединитьПути(КаталогСКомпонентами, ИмяКаталогаOscript);
72
+ ФС.ОбеспечитьПустойКаталог(ПутьККаталгуOscript);
73
+
74
+ Для Каждого ИмяПроекта Из ИменаПроектов Цикл
75
+ ПутьККаталгуDotnet = ОбъединитьПути(ТекущийКаталог(), "src/" + ИмяПроекта + "/bin/Release" , ИмяКаталогаDotnet);
76
+
77
+ Для Каждого Строка Из ИменаФайловБиблиотек Цикл
78
+ ИмяФайла = Строка.Ключ;
79
+ ПутьИсточник = ОбъединитьПути(ПутьККаталгуDotnet, ИмяФайла);
80
+ ПутьПриемник = ОбъединитьПути(ПутьККаталгуOscript, ИмяФайла);
81
+
82
+ Если ФС.ФайлСуществует(ПутьИсточник) Тогда
83
+ ПереместитьФайл (ПутьИсточник, ПутьПриемник);
84
+ КонецЕсли ;
85
+ КонецЦикла ;
86
+ КонецЦикла ;
87
+ КонецЦикла ;
88
+
89
+ КонецПроцедуры
90
+
91
+ Процедура ПроверитьНаличиеБиблиотекиDotNET (ИменаФайловБиблиотек )
92
+
93
+ Для Каждого ИмяПапки Из СтрРазделить ("net4,dotnet" , "," ) Цикл
94
+ Для Каждого Строка Из ИменаФайловБиблиотек Цикл
95
+
96
+ ИмяФайла = Строка.Ключ;
97
+ ИмяЦелевойПапки = Строка.Значение;
98
+
99
+ Если ЗначениеЗаполнено (ИмяЦелевойПапки) И ИмяЦелевойПапки <> ИмяПапки Тогда
100
+ Продолжить ;
101
+ КонецЕсли ;
102
+
103
+ ПутьКФайлу = ОбъединитьПути(ТекущийКаталог(), "Components" , ИмяПапки, ИмяФайла);
104
+ Если Не ФС.ФайлСуществует(ПутьКФайлу) Тогда
105
+ ВызватьИсключение СтрШаблон ("Отсутсвует .NET библиотека %1 в папке Components/%2" , ИмяФайла, ИмяПапки);
106
+ КонецЕсли ;
107
+
108
+ КонецЦикла ;
109
+ КонецЦикла ;
110
+
111
+ КонецПроцедуры
0 commit comments