1+ Перем ИндексКлассов ;
2+ Перем КаталогBin ;
3+ Перем КаталогКлассов ;
4+ Перем ПрефиксКлассов ;
5+ Перем ИмяМенеджераФайлов ;
6+
7+ Процедура ВыполнитьЗапаковку ()
8+
9+ ТекущийКаталогЗадачи = ТекущийСценарий().Каталог;
10+
11+ КаталогПроекта = Новый Файл(ОбъединитьПути(ТекущийКаталогЗадачи, ".." )).ПолноеИмя;
12+
13+ ПрефиксКлассов = "gitsync_plugins" ;
14+
15+ КаталогКлассов = ОбъединитьПути(КаталогПроекта, "src/Классы/internal/bindata/Классы" );
16+ КаталогBin = ОбъединитьПути(КаталогПроекта, "bin" );
17+
18+ Каталогv8unpack = ОбъединитьПути(КаталогBin, "v8unpack" );
19+ КаталогcTool_1CD = ОбъединитьПути(КаталогBin, "cTool_1CD" );
20+
21+ ИмяМенеджераФайлов = "МенеджерЗапакованныхФайловGitsyncPlugins.os" ;
22+
23+ ИндексКлассов = Новый Соответствие;
24+ ОбработатьКаталог(Каталогv8unpack, "*.dll" );
25+ ОбработатьКаталог(КаталогcTool_1CD, "*.exe" );
26+
27+ ЗаписатьКлассИндексаЗапаковки(ИндексКлассов);
28+
29+ КонецПроцедуры
30+
31+ Процедура ЗаписатьКлассИндексаЗапаковки (ИндексКлассов )
32+
33+ ТекстБлока = "Функция ПолучитьИндексФайлов() Экспорт
34+ |
35+ | ИндексФайлов = Новый Соответствие;
36+ |" ;
37+
38+ ШаблонДобавленияВИндекс = " ИндексФайлов.Вставить("" %1"" , "" %2"" );" ;
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+ ИмяКлассаФайла = СтрШаблон ("%1_%2" , ИмяФайла, ПрефиксКлассов);
75+
76+ ПутьКФайлуКласса = ОбъединитьПути(КаталогКлассов, ИмяКлассаФайла + ".os" );
77+ ДанныеФайла = ПолучитBase64Строка(ПолныйПутьКФайлу);
78+ ХешСтрока = ПолучитьХешСтроку(ПолныйПутьКФайлу);
79+
80+ ЗаписатьКласс(ПутьКФайлуКласса, НайденныйФайл.Имя, "1.0.0" , ХешСтрока, ДанныеФайла);
81+
82+ ИндексКлассов.Вставить(НайденныйФайл.Имя, ИмяКлассаФайла);
83+
84+ КонецЦикла ;
85+
86+
87+ КонецПроцедуры
88+
89+ Функция ПолучитьХешСтроку (ПутьКФайлу )
90+
91+ ХешФайла = Новый ХешированиеДанных(ХешФункция.MD5);
92+ ХешФайла.ДобавитьФайл(ПутьКФайлу);
93+
94+ Возврат ХешФайла.ХешСуммаСтрокой;
95+
96+ КонецФункции
97+
98+ Процедура ЗаписатьКласс (ПутьКФайлуКласса , ИмяФайла , ВерсияФайла , ХешСтрока , ДанныеФайла )
99+
100+ ШаблонТекст = "
101+ |///////////////////////////////////////////
102+ |// ФАЙЛ СОЗДАН АВТОМАТИЧЕСКИ //
103+ |///////////////////////////////////////////
104+ |//
105+ |// ФАЙЛ: <%1>
106+ |//
107+ |
108+ |// Возвращает версию запакованного файла
109+ |//
110+ |Функция Версия() Экспорт
111+ | Возврат "" %2"" ;
112+ |КонецФункции
113+ |
114+ |// Возвращает имя запакованного файла
115+ |//
116+ |Функция ИмяФайла() Экспорт
117+ | Возврат "" %1"" ;
118+ |КонецФункции
119+ |
120+ |// Возвращает хеш строку запакованного файла
121+ |//
122+ |Функция Хеш() Экспорт
123+ | Возврат "" %3"" ;
124+ |КонецФункции
125+ |
126+ |// Возвращает запакованные данные файла
127+ |//
128+ |Функция ДвоичныеДанные() Экспорт
129+ | ЗапакованныеДанные = "" %4"" ;
130+ | Возврат ЗапакованныеДанные;
131+ |КонецФункции
132+ |
133+ |" ;
134+
135+ ТекстКласса = СтрШаблон (ШаблонТекст, ИмяФайла, ВерсияФайла, ХешСтрока, ДанныеФайла);
136+
137+ ЗаписьТекста = Новый ЗаписьТекста(ПутьКФайлуКласса);
138+ ЗаписьТекста.ЗаписатьСтроку(ТекстКласса);
139+ ЗаписьТекста.Закрыть();
140+
141+ КонецПроцедуры
142+
143+ Функция ПолучитBase64Строка (ПутьКФайлу )
144+
145+ ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу);
146+ Строка = Base64Строка (ДвоичныеДанныеФайла);
147+ Возврат Строка;
148+
149+ КонецФункции
150+
151+ ВыполнитьЗапаковку();
0 commit comments