1
- Перем ХранилищеКонфигурации ;
2
- Перем ПутьКФайлуОбработку ;
3
- Перем Лог ;
4
- Перем ЭтоПриложениеEXE ;
1
+ Перем ПутьКФайлу ;
5
2
6
- Функция ПолучитьПутьКОбработке () Экспорт
7
-
8
- СобратьОбработку();
3
+ #Область ПрограммныйИнтерфейс
9
4
10
- Возврат ПутьКФайлуОбработку ;
5
+ Функция ПолучитьПутьКФайлу ( Знач ИмяФайла ) Экспорт
11
6
12
- КонецФункции
7
+ Если Не ПустаяСтрока (ПутьКФайлу) Тогда
8
+ Возврат ПутьКФайлу;
9
+ КонецЕсли ;
13
10
14
- Процедура СобратьОбработку ()
11
+ МенеджерЗапакованныхФайлов = Новый МенеджерЗапакованныхФайловV8Storage;
12
+ ИндексФайлов = МенеджерЗапакованныхФайлов.ПолучитьИндексФайлов();
15
13
16
- ФайлОбработки = Новый Файл(ПутьКФайлуОбработку) ;
14
+ ИмяКлассаФайла = ИндексФайлов[ИмяФайла] ;
17
15
18
- Если ФайлОбработки.Существует() Тогда
19
- Возврат ;
16
+ Если ИмяКлассаФайла = Неопределено Тогда
17
+ ВызватьИсключение СтрШаблон ( "Не удалось найти двоичные данные для файла <%1>" , ИмяФайла) ;
20
18
КонецЕсли ;
21
19
22
- Если ЭтоСборкаEXE() Тогда
23
- ЗагрузчикВнешнейEPF = Новый ЗагрузчикВнешнейEPF;
24
- ПутьКФайлуОбработку = ЗагрузчикВнешнейEPF.ПолучитьПутьКФайлу();
25
- Иначе
20
+ КлассФайла = Новый (ИмяКлассаФайла);
26
21
27
- ПутьКФайлуОбработку = ПутьКСобраннойEpf() ;
22
+ ПутьКФайлу = "" ;
28
23
29
- Если ПустаяСтрока (ПутьКФайлуОбработку) Тогда
30
- Лог.Отладка("Не найдена готовая обработка. Делаю попытку собрать временную обработку исходников" );
31
-
32
- ПутьКФайлуОбработку = СобратьФайлОбработки();
24
+ НайтиФайлИлиРаспаковать(КлассФайла, ПутьКФайлу);
33
25
34
- КонецЕсли ;
26
+ Возврат ПутьКФайлу ;
35
27
36
- КонецЕсли ;
37
-
38
- КонецПроцедуры
28
+ КонецФункции
39
29
40
- Функция ПутьКСобраннойEpf ()
41
-
42
- КаталогБиблиотеки = ОбъединитьПути(ОбъединитьПути(ТекущийСценарий().Каталог, ".." , ".." , ".." ), ".." );
30
+ #КонецОбласти
43
31
44
- ФайлКаталогаБиблиотеки = Новый Файл(КаталогБиблиотеки) ;
32
+ #Область Упакованные_файлы
45
33
46
- ПутьККаталогуБиблиотеки = ФайлКаталогаБиблиотеки.ПолноеИмя ;
34
+ Процедура РаспаковатьДанные ( Знач ПутьКФайлу , КлассФайла )
47
35
48
- ПутьКСобраннойEpf = ОбъединитьПути(ПутьККаталогуБиблиотеки , "bin" , "ОбработкаКонвертацииMXLJSON.epf" );
36
+ ДвоичныеДанные = Base64Значение (КлассФайла.ДвоичныеДанные() );
49
37
50
- ФайлСобраннойEpf = Новый Файл(ПутьКСобраннойEpf );
38
+ ОбеспечитьКаталог(ПутьКФайлу );
51
39
52
- Если ФайлСобраннойEpf.Существует() Тогда
53
- Лог.Отладка( "Найдена готовая обработка по пути: %1" , ПутьКСобраннойEpf ) ;
54
-
55
- Возврат ФайлСобраннойEpf.ПолноеИмя ;
56
- КонецЕсли ;
40
+ ДвоичныеДанные.Записать(ПутьКФайлу) ;
41
+
42
+ КонецПроцедуры
43
+
44
+ Функция ВычислитьХешФайла ( Знач ПутьКФайлу )
57
45
58
- Возврат "" ;
46
+ ХешФайла = Новый ХешированиеДанных(ХешФункция.MD5);
47
+ ХешФайла.ДобавитьФайл(ПутьКФайлу);
48
+
49
+ Возврат ХешФайла.ХешСуммаСтрокой;
59
50
60
51
КонецФункции
61
52
62
- Функция СобратьФайлОбработки ()
63
-
64
- ПутьКНовомуФайлу = ПолучитьПутьКФайлу("ОбработкаКонвертацииXMLJSON.epf" , "1.0.0" );
53
+ Процедура НайтиФайлИлиРаспаковать (КлассФайла , ПутьКФайлу )
65
54
66
- КаталоИсходниковОбработки = ОбъединитьПути(ТекущийСценарий().Каталог, "epf" );
67
- ФайлXmlОбработки = ОбъединитьПути(КаталоИсходниковОбработки, "ОбработкаКонвертацииMXLJSON.xml" );
55
+ ИмяФайла = КлассФайла.ИмяФайла();
68
56
69
- ХранилищеКонфигурации.СобратьОбработкуКонвертации(ФайлXmlОбработки , ПутьКНовомуФайлу );
57
+ ПутьКФайлу = ПолучитьПутьКВременномуФайлу(ИмяФайла );
70
58
71
- Возврат ПутьКНовомуФайлу ;
59
+ ВременныйФайл = Новый Файл(ПутьКФайлу) ;
72
60
73
- КонецФункции
74
-
75
- Функция ПолучитьПутьКФайлу (ИмяФайла , ВерсияФайла )
76
- ПутьКФайлу = ОбъединитьПути(КаталогВременныхФайлов (), ".v8storage" , СтрЗаменить (ВерсияФайла, "." , "_" ), ИмяФайла);
61
+ Если Не ВременныйФайл.Существует()
62
+ Тогда // ИЛИ Не ВычислитьХешФайла(ПутьКФайлу) = ДанныеDll.Хеш() Тогда
63
+ РаспаковатьДанные(ПутьКФайлу, КлассФайла);
64
+ КонецЕсли ;
65
+
66
+ КонецПроцедуры
67
+
68
+ Функция ПолучитьПутьКВременномуФайлу (Знач ИмяФайла )
69
+ ПутьКФайлу = ОбъединитьПути(КаталогВременныхФайлов (), ".gitsync-plugins" , ИмяФайла);
77
70
Возврат ПутьКФайлу;
78
71
КонецФункции
79
72
80
- Функция ЭтоСборкаEXE () Экспорт
81
-
82
- Если ЭтоПриложениеEXE = Неопределено Тогда
83
- ЭтоПриложениеEXE = ВРег (Прав (ТекущийСценарий().Источник, 3 )) = "EXE" ;
84
- КонецЕсли ;
73
+ Процедура ОбеспечитьКаталог (ПутьККаталогу )
85
74
86
- Возврат ЭтоПриложениеEXE ;
75
+ ВременныйКаталог = Новый Файл(ПутьККаталогу) ;
87
76
88
- КонецФункции
77
+ Если ВременныйКаталог.Существует() Тогда
78
+ Возврат ;
79
+ КонецЕсли ;
89
80
90
- Процедура ПриСозданииОбъекта (Знач ЗначениеХранилищеКонфигурации )
91
-
92
- ХранилищеКонфигурации = ЗначениеХранилищеКонфигурации;
81
+ СоздатьКаталог (ВременныйКаталог.Путь);
93
82
94
- ПутьКФайлуОбработку = "" ;
83
+ КонецПроцедуры
95
84
96
- Лог = Логирование.ПолучитьЛог( "oscript.lib.v8storage" ) ;
85
+ #КонецОбласти
97
86
98
- КонецПроцедуры
87
+ ПутьКФайлу = "" ;
0 commit comments