1
1
#Использовать semver
2
2
3
+ Перем Лог ;
3
4
Перем КодСостояния Экспорт ;
4
5
Перем ИмяФайла ;
5
6
32
33
33
34
Процедура ПодобратьФайлПакета (Знач КаталогФайловПакета )
34
35
36
+ ИмяПакета = Новый Файл(КаталогФайловПакета).Имя;
37
+ ИмяСРазделителем = ИмяПакета + "-" ;
38
+
35
39
ФайлыПакета = НайтиФайлы (КаталогФайловПакета, "*.ospx" );
36
40
37
41
ВыбранныйФайл = Неопределено ;
38
42
ВыбраннаяВерсия = Неопределено ;
39
43
40
44
Для Каждого мФайлПакета Из ФайлыПакета Цикл
41
45
42
- Имя = мФайлПакета.ИмяБезРасширения;
43
- Части = СтрРазделить (Имя, "-" );
44
- Если Части.Количество() > 1 Тогда
46
+ ИмяСВерсией = мФайлПакета.ИмяБезРасширения;
47
+ ТекущаяВерсия = Неопределено ;
48
+
49
+ ФайлМетаданных = Новый Файл(ОбъединитьПути(мФайлПакета.Путь, ИмяСВерсией, КонстантыOpm.ИмяФайлаМетаданныхПакета));
50
+ Если ФайлМетаданных.Существует() Тогда
45
51
46
- ВерсияТекст = Части[Части.ВГраница()];
47
- ТекущаяВерсия = Версии.ВерсияИзСтроки(ВерсияТекст);
52
+ // есть сохраненный файл метаданных
53
+ МетаданныеПакета = РаботаСПакетами.ПрочитатьМетаданныеПакета(ФайлМетаданных.ПолноеИмя);
54
+ ТекущаяВерсия = Версии.ВерсияИзСтроки(МетаданныеПакета.Свойства().Версия);
55
+
56
+ ИначеЕсли СтрНачинаетсяС (ИмяСВерсией, ИмяСРазделителем) Тогда
57
+
58
+ // извлекаем номер версии из имени файла
59
+ ВерсияИзИмениФайла = Сред (ИмяСВерсией, СтрДлина (ИмяСРазделителем) + 1 );
60
+ Если Не ПустаяСтрока (ВерсияИзИмениФайла) Тогда
61
+ ТекущаяВерсия = Версии.ВерсияИзСтроки(ВерсияИзИмениФайла);
62
+ КонецЕсли ;
63
+
64
+ Иначе
65
+ // Файл не по канону - пропустим
66
+ Лог.Отладка("Файл %1 не соответствует правилам расположения файлов пакета." , мФайлПакета.ПолноеИмя);
67
+ КонецЕсли ;
48
68
49
- Если (ВыбраннаяВерсия = Неопределено )
50
- Или (ВыбраннаяВерсия.Сравнить(ТекущаяВерсия) < 0 ) Тогда
69
+ Если (ТекущаяВерсия <> Неопределено ) Тогда
70
+
71
+ Лог.Отладка("Найден файл %1 с версией %2" , мФайлПакета.ПолноеИмя, ТекущаяВерсия.ВСтроку());
72
+
73
+ Если ((ВыбраннаяВерсия = Неопределено )
74
+ Или (ВыбраннаяВерсия.Сравнить(ТекущаяВерсия) < 0 )) Тогда
51
75
52
76
ВыбраннаяВерсия = ТекущаяВерсия;
53
77
ВыбранныйФайл = мФайлПакета;
59
83
КонецЦикла ;
60
84
61
85
Если ВыбранныйФайл <> Неопределено Тогда
86
+
87
+ Лог.Отладка("Для пакета %1 подобрана версия %2" , ИмяПакета, ВыбраннаяВерсия.ВСтроку());
88
+
62
89
ИмяФайла = ВыбранныйФайл.ПолноеИмя;
63
90
КодСостояния = 200 ;
91
+
64
92
КонецЕсли ;
65
93
66
94
КонецПроцедуры
95
+
96
+ Лог = Логирование.ПолучитьЛог("oscript.app.opm.fileserver" );
0 commit comments