11#Использовать semver
22
3+ Перем Лог ;
34Перем КодСостояния Экспорт ;
45Перем ИмяФайла ;
56
3233
3334Процедура ПодобратьФайлПакета (Знач КаталогФайловПакета )
3435
36+ ИмяПакета = Новый Файл(КаталогФайловПакета).Имя;
37+ ИмяСРазделителем = ИмяПакета + "-" ;
38+
3539 ФайлыПакета = НайтиФайлы (КаталогФайловПакета, "*.ospx" );
3640
3741 ВыбранныйФайл = Неопределено ;
3842 ВыбраннаяВерсия = Неопределено ;
3943
4044 Для Каждого мФайлПакета Из ФайлыПакета Цикл
4145
42- Имя = мФайлПакета.ИмяБезРасширения;
43- Части = СтрРазделить (Имя, "-" );
44- Если Части.Количество() > 1 Тогда
46+ ИмяСВерсией = мФайлПакета.ИмяБезРасширения;
47+ ТекущаяВерсия = Неопределено ;
48+
49+ ФайлМетаданных = Новый Файл(ОбъединитьПути(мФайлПакета.Путь, ИмяСВерсией, КонстантыOpm.ИмяФайлаМетаданныхПакета));
50+ Если ФайлМетаданных.Существует() Тогда
4551
46- ВерсияТекст = Части[Части.ВГраница()];
47- ТекущаяВерсия = Версии.ВерсияИзСтроки(ВерсияТекст);
52+ // есть сохраненный файл метаданных
53+ МетаданныеПакета = РаботаСПакетами.ПрочитатьМетаданныеПакета(ФайлМетаданных.ПолноеИмя);
54+ ТекущаяВерсия = Версии.ВерсияИзСтроки(МетаданныеПакета.Свойства().Версия);
55+
56+ ИначеЕсли СтрНачинаетсяС (ИмяСВерсией, ИмяСРазделителем) Тогда
57+
58+ // извлекаем номер версии из имени файла
59+ ВерсияИзИмениФайла = Сред (ИмяСВерсией, СтрДлина (ИмяСРазделителем) + 1 );
60+ Если Не ПустаяСтрока (ВерсияИзИмениФайла) Тогда
61+ ТекущаяВерсия = Версии.ВерсияИзСтроки(ВерсияИзИмениФайла);
62+ КонецЕсли ;
63+
64+ Иначе
65+ // Файл не по канону - пропустим
66+ Лог.Отладка("Файл %1 не соответствует правилам расположения файлов пакета." , мФайлПакета.ПолноеИмя);
67+ КонецЕсли ;
4868
49- Если (ВыбраннаяВерсия = Неопределено )
50- Или (ВыбраннаяВерсия.Сравнить(ТекущаяВерсия) < 0 ) Тогда
69+ Если (ТекущаяВерсия <> Неопределено ) Тогда
70+
71+ Лог.Отладка("Найден файл %1 с версией %2" , мФайлПакета.ПолноеИмя, ТекущаяВерсия.ВСтроку());
72+
73+ Если ((ВыбраннаяВерсия = Неопределено )
74+ Или (ВыбраннаяВерсия.Сравнить(ТекущаяВерсия) < 0 )) Тогда
5175
5276 ВыбраннаяВерсия = ТекущаяВерсия;
5377 ВыбранныйФайл = мФайлПакета;
5983 КонецЦикла ;
6084
6185 Если ВыбранныйФайл <> Неопределено Тогда
86+
87+ Лог.Отладка("Для пакета %1 подобрана версия %2" , ИмяПакета, ВыбраннаяВерсия.ВСтроку());
88+
6289 ИмяФайла = ВыбранныйФайл.ПолноеИмя;
6390 КодСостояния = 200 ;
91+
6492 КонецЕсли ;
6593
6694КонецПроцедуры
95+
96+ Лог = Логирование.ПолучитьЛог("oscript.app.opm.fileserver" );
0 commit comments