Skip to content

Commit 540b0d9

Browse files
committed
Команда сборки приложения с плагинами
1 parent 869457a commit 540b0d9

File tree

1 file changed

+146
-0
lines changed

1 file changed

+146
-0
lines changed

tasks/make.os

Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
#Использовать gitrunner
2+
#Использовать tempfiles
3+
4+
Перем Лог;
5+
Перем КаталогПроекта;
6+
7+
8+
Процедура ВыполнитьСборкуEXE(КаталогУстановки)
9+
10+
Лог.Информация("Выполнение создания exe в <%1>", КаталогУстановки);
11+
12+
ФайлПриложения = ОбъединитьПути(КаталогУстановки, "gitsync", "src/cmd", "gitsync.os");
13+
ВыходнойФайл = ОбъединитьПути(КаталогПроекта, "bin", "gitsync.exe");
14+
15+
КомандаOpm = Новый Команда;
16+
КомандаOpm.УстановитьРабочийКаталог(КаталогУстановки);
17+
КомандаOpm.УстановитьКоманду("oscript");
18+
КомандаOpm.ДобавитьПараметр("-make");
19+
КомандаOpm.ДобавитьПараметр(ФайлПриложения);
20+
КомандаOpm.ДобавитьПараметр(ВыходнойФайл);
21+
КомандаOpm.ПоказыватьВыводНемедленно(Истина);
22+
23+
КодВозврата = КомандаOpm.Исполнить();
24+
25+
Если КодВозврата <> 0 Тогда
26+
ВызватьИсключение "";
27+
КонецЕсли;
28+
29+
КонецПроцедуры
30+
31+
Процедура ПодготовитьПлагины(Знач КаталогУстановки, КаталогПлагинов)
32+
33+
КаталогВнутреннихКлассов = ОбъединитьПути(КаталогУстановки, "gitsync", "src/core/Классы/internal/Классы");
34+
35+
ПодготовитьФайлИндексПлагиновEXE(КаталогВнутреннихКлассов, КаталогПлагинов);
36+
37+
КонецПроцедуры
38+
39+
Процедура ПодготовитьФайлИндексПлагиновEXE(Знач КаталогВнутреннихКлассов, Знач КаталогПлагинов)
40+
41+
МассивПлагинов = ПолучитьМассивПлагинов(КаталогПлагинов);
42+
43+
ФайлИндексПлагиновEXE = ОбъединитьПути(КаталогВнутреннихКлассов, "ПодключениеЗапакованныхПлагинов.os");
44+
45+
ЗаписьТекста = Новый ЗаписьТекста(ФайлИндексПлагиновEXE);
46+
47+
КаталогиПлагинов = НайтиФайлы(КаталогПлагинов, ПолучитьМаскуВсеФайлы(), Ложь);
48+
49+
ЗаписьТекста.ЗаписатьСтроку(СтрШаблон("#Использовать ""%1""", КаталогПлагинов));
50+
51+
ЗаписьТекста.ЗаписатьСтроку("Функция ИндексПлагинов() Экспорт");
52+
ЗаписьТекста.ЗаписатьСтроку(" ИндексПлагинов = Новый Массив;");
53+
54+
Для каждого ИмяПлагина Из МассивПлагинов Цикл
55+
ЗаписьТекста.ЗаписатьСтроку(СтрШаблон(" ИндексПлагинов.Добавить(""%1"");", ИмяПлагина));
56+
КонецЦикла;
57+
58+
ЗаписьТекста.ЗаписатьСтроку(" Возврат ИндексПлагинов;");
59+
ЗаписьТекста.ЗаписатьСтроку("КонецФункции");
60+
61+
ЗаписьТекста.Закрыть();
62+
63+
КонецПроцедуры
64+
65+
Функция ПолучитьМассивПлагинов(Знач КаталогПлагинов)
66+
67+
Лог.Отладка("Обновление индекса плагина из каталога <%1>", КаталогПлагинов);
68+
МассивПлагинов = Новый Массив;
69+
70+
КаталогиПлагинов = НайтиФайлы(КаталогПлагинов, ПолучитьМаскуВсеФайлы(), Ложь);
71+
72+
ПрочитатьПлагин(ОбъединитьПути(КаталогПроекта, "src"), МассивПлагинов);
73+
74+
Лог.Отладка("В индекс плагинов добавлено <%1> плагинов", МассивПлагинов.Количество());
75+
76+
Возврат МассивПлагинов;
77+
78+
КонецФункции
79+
80+
Процедура ПрочитатьПлагин(Знач Путь, МассивПлагинов)
81+
82+
Лог.Отладка("Загружаю плагины из каталога <%1>", Путь);
83+
84+
ОбработатьСтруктуруКаталоговПоСоглашению(Путь, МассивПлагинов);
85+
86+
КонецПроцедуры
87+
88+
89+
Процедура ОбработатьСтруктуруКаталоговПоСоглашению(Путь, МассивПлагинов)
90+
91+
КаталогиКлассов = Новый Массив;
92+
КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "Классы"));
93+
КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "Classes"));
94+
КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "src", "Классы"));
95+
КаталогиКлассов.Добавить(ОбъединитьПути(Путь, "src", "Classes"));
96+
97+
Для Каждого мКаталог Из КаталогиКлассов Цикл
98+
99+
ОбработатьКаталогКлассов(мКаталог, МассивПлагинов);
100+
101+
КонецЦикла;
102+
103+
104+
КонецПроцедуры
105+
106+
Процедура ОбработатьКаталогКлассов(Знач Путь, МассивПлагинов)
107+
108+
КаталогКлассов = Новый Файл(Путь);
109+
110+
Если КаталогКлассов.Существует() Тогда
111+
Файлы = НайтиФайлы(КаталогКлассов.ПолноеИмя, "*.os");
112+
Для Каждого Файл Из Файлы Цикл
113+
Сообщить(СтрШаблон(" класс (по соглашению) %1, файл %2", Файл.ИмяБезРасширения, Файл.ПолноеИмя));
114+
СтандартнаяОбработка = Ложь;
115+
// ДобавитьКласс(Файл.ПолноеИмя, Файл.ИмяБезРасширения);
116+
117+
МассивПлагинов.Добавить(Файл.ИмяБезРасширения);
118+
119+
КонецЦикла;
120+
КонецЕсли;
121+
122+
КонецПроцедуры
123+
124+
Процедура ПолезнаяРабота()
125+
126+
КаталогСборки = ВременныеФайлы.СоздатьКаталог();
127+
КаталогУстановки = ОбъединитьПути(КаталогПроекта, "bin");
128+
129+
130+
ПодготовитьПлагины(КаталогУстановки, КаталогПроекта);
131+
132+
ВыполнитьСборкуEXE(КаталогУстановки);
133+
134+
ВременныеФайлы.УдалитьФайл(КаталогСборки);
135+
//ВременныеФайлы.УдалитьФайл(КаталогУстановки);
136+
137+
КонецПроцедуры
138+
139+
140+
ФайлКаталогПроекта = Новый Файл(ОбъединитьПути(ТекущийСценарий().Каталог, ".."));
141+
КаталогПроекта = ФайлКаталогПроекта.ПолноеИмя;
142+
143+
Лог = Логирование.ПолучитьЛог("task.install-opm");
144+
// Лог.УстановитьУровень(УровниЛОга.отладка);
145+
146+
ПолезнаяРабота();

0 commit comments

Comments
 (0)