Skip to content

Commit 48b6eca

Browse files
committed
Универсальная запаковка и получение двоичных файлов
1 parent aa4f7e8 commit 48b6eca

6 files changed

+56
-208
lines changed

features/step_definitions/ОбщиеФункции.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@
106106

107107
Функция КаталогОбработки()
108108

109-
Возврат ОбъединитьПути(КаталогПроекта(), "/src/Классы/internal/Классы/epf", "ОбработкаКонвертацииMXLJSON", "ОбработкаКонвертацииMXLJSON.xml");
109+
Возврат ОбъединитьПути(КаталогПроекта(), "epf", "ОбработкаКонвертацииMXLJSON", "ОбработкаКонвертацииMXLJSON.xml");
110110

111111
КонецФункции
112112

src/Классы/internal/Классы/ЗагрузчикВнешнейEPF.os

Lines changed: 0 additions & 139 deletions
This file was deleted.
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
Функция ПолучитьИндексФайлов() Экспорт
22

33
ИндексФайлов = Новый Соответствие;
4+
ИндексФайлов.Вставить("ОбработкаКонвертацииMXLJSON.epf", "ОбработкаКонвертацииMXLJSON_v8storage");
45

5-
ИндексФайлов.Вставить("ОбработкаКонвертацииMXLJSON_1.0.0", "ОбработкаКонвертацииMXLJSON_1_0_0");
6-
7-
86
Возврат ИндексФайлов;
97

108
КонецФункции
File renamed without changes.
Lines changed: 52 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,98 +1,87 @@
1-
Перем ХранилищеКонфигурации;
2-
Перем ПутьКФайлуОбработку;
3-
Перем Лог;
4-
Перем ЭтоПриложениеEXE;
1+
Перем ПутьКФайлу;
52

6-
Функция ПолучитьПутьКОбработке() Экспорт
7-
8-
СобратьОбработку();
3+
#Область ПрограммныйИнтерфейс
94

10-
Возврат ПутьКФайлуОбработку;
5+
Функция ПолучитьПутьКФайлу(Знач ИмяФайла) Экспорт
116

12-
КонецФункции
7+
Если Не ПустаяСтрока(ПутьКФайлу) Тогда
8+
Возврат ПутьКФайлу;
9+
КонецЕсли;
1310

14-
Процедура СобратьОбработку()
11+
МенеджерЗапакованныхФайлов = Новый МенеджерЗапакованныхФайловV8Storage;
12+
ИндексФайлов = МенеджерЗапакованныхФайлов.ПолучитьИндексФайлов();
1513

16-
ФайлОбработки = Новый Файл(ПутьКФайлуОбработку);
14+
ИмяКлассаФайла = ИндексФайлов[ИмяФайла];
1715

18-
Если ФайлОбработки.Существует() Тогда
19-
Возврат;
16+
Если ИмяКлассаФайла = Неопределено Тогда
17+
ВызватьИсключение СтрШаблон("Не удалось найти двоичные данные для файла <%1>", ИмяФайла);
2018
КонецЕсли;
2119

22-
Если ЭтоСборкаEXE() Тогда
23-
ЗагрузчикВнешнейEPF = Новый ЗагрузчикВнешнейEPF;
24-
ПутьКФайлуОбработку = ЗагрузчикВнешнейEPF.ПолучитьПутьКФайлу();
25-
Иначе
20+
КлассФайла = Новый (ИмяКлассаФайла);
2621

27-
ПутьКФайлуОбработку = ПутьКСобраннойEpf();
22+
ПутьКФайлу = "";
2823

29-
Если ПустаяСтрока(ПутьКФайлуОбработку) Тогда
30-
Лог.Отладка("Не найдена готовая обработка. Делаю попытку собрать временную обработку исходников");
31-
32-
ПутьКФайлуОбработку = СобратьФайлОбработки();
24+
НайтиФайлИлиРаспаковать(КлассФайла, ПутьКФайлу);
3325

34-
КонецЕсли;
26+
Возврат ПутьКФайлу;
3527

36-
КонецЕсли;
37-
38-
КонецПроцедуры
28+
КонецФункции
3929

40-
Функция ПутьКСобраннойEpf()
41-
42-
КаталогБиблиотеки = ОбъединитьПути(ОбъединитьПути(ТекущийСценарий().Каталог, "..", "..", ".."), "..");
30+
#КонецОбласти
4331

44-
ФайлКаталогаБиблиотеки = Новый Файл(КаталогБиблиотеки);
32+
#Область Упакованные_файлы
4533

46-
ПутьККаталогуБиблиотеки = ФайлКаталогаБиблиотеки.ПолноеИмя;
34+
Процедура РаспаковатьДанные(Знач ПутьКФайлу, КлассФайла)
4735

48-
ПутьКСобраннойEpf = ОбъединитьПути(ПутьККаталогуБиблиотеки, "bin", "ОбработкаКонвертацииMXLJSON.epf");
36+
ДвоичныеДанные = Base64Значение(КлассФайла.ДвоичныеДанные());
4937

50-
ФайлСобраннойEpf = Новый Файл(ПутьКСобраннойEpf);
38+
ОбеспечитьКаталог(ПутьКФайлу);
5139

52-
Если ФайлСобраннойEpf.Существует() Тогда
53-
Лог.Отладка("Найдена готовая обработка по пути: %1", ПутьКСобраннойEpf );
54-
55-
Возврат ФайлСобраннойEpf.ПолноеИмя;
56-
КонецЕсли;
40+
ДвоичныеДанные.Записать(ПутьКФайлу);
41+
42+
КонецПроцедуры
43+
44+
Функция ВычислитьХешФайла(Знач ПутьКФайлу)
5745

58-
Возврат "";
46+
ХешФайла = Новый ХешированиеДанных(ХешФункция.MD5);
47+
ХешФайла.ДобавитьФайл(ПутьКФайлу);
48+
49+
Возврат ХешФайла.ХешСуммаСтрокой;
5950

6051
КонецФункции
6152

62-
Функция СобратьФайлОбработки()
63-
64-
ПутьКНовомуФайлу = ПолучитьПутьКФайлу("ОбработкаКонвертацииXMLJSON.epf", "1.0.0");
53+
Процедура НайтиФайлИлиРаспаковать(КлассФайла, ПутьКФайлу)
6554

66-
КаталоИсходниковОбработки = ОбъединитьПути(ТекущийСценарий().Каталог, "epf");
67-
ФайлXmlОбработки = ОбъединитьПути(КаталоИсходниковОбработки, "ОбработкаКонвертацииMXLJSON.xml");
55+
ИмяФайла = КлассФайла.ИмяФайла();
6856

69-
ХранилищеКонфигурации.СобратьОбработкуКонвертации(ФайлXmlОбработки, ПутьКНовомуФайлу);
57+
ПутьКФайлу = ПолучитьПутьКВременномуФайлу(ИмяФайла);
7058

71-
Возврат ПутьКНовомуФайлу;
59+
ВременныйФайл = Новый Файл(ПутьКФайлу);
7260

73-
КонецФункции
74-
75-
Функция ПолучитьПутьКФайлу(ИмяФайла, ВерсияФайла)
76-
ПутьКФайлу = ОбъединитьПути(КаталогВременныхФайлов(), ".v8storage", СтрЗаменить(ВерсияФайла, ".", "_"), ИмяФайла);
61+
Если Не ВременныйФайл.Существует()
62+
Тогда// ИЛИ Не ВычислитьХешФайла(ПутьКФайлу) = ДанныеDll.Хеш() Тогда
63+
РаспаковатьДанные(ПутьКФайлу, КлассФайла);
64+
КонецЕсли;
65+
66+
КонецПроцедуры
67+
68+
Функция ПолучитьПутьКВременномуФайлу(Знач ИмяФайла)
69+
ПутьКФайлу = ОбъединитьПути(КаталогВременныхФайлов(), ".gitsync-plugins", ИмяФайла);
7770
Возврат ПутьКФайлу;
7871
КонецФункции
7972

80-
Функция ЭтоСборкаEXE() Экспорт
81-
82-
Если ЭтоПриложениеEXE = Неопределено Тогда
83-
ЭтоПриложениеEXE = ВРег(Прав(ТекущийСценарий().Источник, 3)) = "EXE";
84-
КонецЕсли;
73+
Процедура ОбеспечитьКаталог(ПутьККаталогу)
8574

86-
Возврат ЭтоПриложениеEXE;
75+
ВременныйКаталог = Новый Файл(ПутьККаталогу);
8776

88-
КонецФункции
77+
Если ВременныйКаталог.Существует() Тогда
78+
Возврат;
79+
КонецЕсли;
8980

90-
Процедура ПриСозданииОбъекта(Знач ЗначениеХранилищеКонфигурации)
91-
92-
ХранилищеКонфигурации = ЗначениеХранилищеКонфигурации;
81+
СоздатьКаталог(ВременныйКаталог.Путь);
9382

94-
ПутьКФайлуОбработку = "";
83+
КонецПроцедуры
9584

96-
Лог = Логирование.ПолучитьЛог("oscript.lib.v8storage");
85+
#КонецОбласти
9786

98-
КонецПроцедуры
87+
ПутьКФайлу = "";

src/Классы/МенеджерХранилищаКонфигурации.os

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@
540540

541541
КлючЗапуска = СтрШаблон("""%1;%2""", ПутьКФайлуОтчета, ПутьКФайлуОтчетаJSON);
542542

543-
ПутьКФайлуОбработки = ОбработкаКонвертации.ПолучитьПутьКОбработке();
543+
ПутьКФайлуОбработки = ОбработкаКонвертации.ПолучитьПутьКФайлу("ОбработкаКонвертацииMXLJSON.epf");
544544

545545
ПараметрыЗапускаОбработки = СтрШаблон("/Execute ""%1""", ПутьКФайлуОбработки);
546546
УправлениеКонфигураторомХранилища.ЗапуститьВРежимеПредприятия(КлючЗапуска, Ложь, ПараметрыЗапускаОбработки);
@@ -710,7 +710,7 @@
710710
ПараметрыАвторизации = Новый Структура();
711711
УстановитьПараметрыАвторизации("");
712712

713-
ОбработкаКонвертации = Новый ОбработкаКонвертацииXMLJSON(ЭтотОбъект);
713+
ОбработкаКонвертации = Новый ОбработкаКонвертацииXMLJSON;
714714

715715
СистемнаяИнформация = Новый СистемнаяИнформация;
716716
ЭтоWindows = Найти(НРег(СистемнаяИнформация.ВерсияОС), "windows") > 0;

0 commit comments

Comments
 (0)