Skip to content

Commit 4f14dea

Browse files
committed
Улучшен поиск последней версии при установке с файлового сервера.
1 parent 6e55251 commit 4f14dea

File tree

1 file changed

+37
-7
lines changed

1 file changed

+37
-7
lines changed

src/core/Классы/ФайловыйСерверОтвет.os

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#Использовать semver
22

3+
Перем Лог;
34
Перем КодСостояния Экспорт;
45
Перем ИмяФайла;
56

@@ -32,22 +33,45 @@
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
ВыбранныйФайл = мФайлПакета;
@@ -59,8 +83,14 @@
5983
КонецЦикла;
6084

6185
Если ВыбранныйФайл <> Неопределено Тогда
86+
87+
Лог.Отладка("Для пакета %1 подобрана версия %2", ИмяПакета, ВыбраннаяВерсия.ВСтроку());
88+
6289
ИмяФайла = ВыбранныйФайл.ПолноеИмя;
6390
КодСостояния = 200;
91+
6492
КонецЕсли;
6593

6694
КонецПроцедуры
95+
96+
Лог = Логирование.ПолучитьЛог("oscript.app.opm.fileserver");

0 commit comments

Comments
 (0)