From b1d854ddbbdcea2af1c1778c46142afa56269b7a Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 May 2025 20:09:01 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B9=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=20api=20?= =?UTF-8?q?=D1=81=D0=B0=D0=B9=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + ...1\200\321\201\320\270\320\270OneScript.os" | 85 +++++++++++++++++++ ...274\320\265\321\202\321\200\321\213OVM.os" | 15 ++++ ...0\262\321\211\320\270\320\272OneScript.os" | 60 ++++++++----- 4 files changed, 141 insertions(+), 20 deletions(-) diff --git a/.gitignore b/.gitignore index 7e063b2..ef9c152 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ +.vscode/launch.json oscript_modules/ src/cmd/oscript\.cfg diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index d67d1bc..6a9204b 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -235,6 +235,91 @@ Возврат ДоступныеВерсии; КонецФункции +// Возвращает таблицу файлов конкретной версии +// +// Параметры: +// НомерВерсии - Строка - версия для которой получаем файлы. +// +// Возвращаемое значение: +// ТаблицаЗначений - Вид,ИмяФайла,Архитектура,Ссылка +// Вид: vsix,exe,zip,fdd,scd-win,scd-lin,osx-x64,osx-arm64 +// ИмяФайла: имя файла +// Архитектура: x64,x86 +// Ссылка: прямая ссылка на данный файл +// См. также: +// https://oscript.io/api/archive/ - список всех токенов +// https://oscript.io/api/archive/<токен версии> - данная таблица +// +Функция ПолучитьДоступныеВидыДистрибутивовВерсии(Знач НомерВерсии) Экспорт + Таймаут = 10; + Соединение = Новый HTTPСоединение( + ПараметрыOVM.АдресСайтаОСкрипт(), + , + , + , + , + Таймаут + ); + + Запрос = Новый HTTPЗапрос("api/archive?all=true"); + Ответ = Соединение.Получить(Запрос); + HTTP_OK = 200; + Если Ответ.КодСостояния <> HTTP_OK Тогда + ВызватьИсключение СтрШаблон("Не удалось найти версию %1 на сайте: Статус: %2, Ответ: %3", + НомерВерсии, + Ответ.КодСостояния, + Ответ.ПолучитьТелоКакСтроку() + ); + КонецЕсли; + + ЧтениеJSON = Новый ЧтениеJSON(); + ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); + + МассивВерсий = ПрочитатьJSON(ЧтениеJSON, Ложь); + ИскомыйТокенВерсии = Неопределено; + Для Каждого ОписаниеВерсии Из МассивВерсий Цикл + Если НомерВерсии = ОписаниеВерсии.presentation Тогда + ИскомыйТокенВерсии = ОписаниеВерсии.token; + КонецЕсли; + КонецЦикла; + + Если ИскомыйТокенВерсии = Неопределено Тогда + ВызватьИсключение СтрШаблон("Не удалось найти версию %1 на сайте.", НомерВерсии); + КонецЕсли; + + Запрос = Новый HTTPЗапрос("api/archive/" + ИскомыйТокенВерсии); + Ответ = Соединение.Получить(Запрос); + HTTP_OK = 200; + Если Ответ.КодСостояния <> HTTP_OK Тогда + ВызватьИсключение СтрШаблон("Не удалось найти файлы версии %1 на сайте: Статус: %2, Ответ: %3", + НомерВерсии, + Ответ.КодСостояния, + Ответ.ПолучитьТелоКакСтроку() + ); + КонецЕсли; + + ТаблицаРезультата = Новый ТаблицаЗначений(); + ТаблицаРезультата.Колонки.Добавить("Вид"); + ТаблицаРезультата.Колонки.Добавить("ИмяФайла"); + ТаблицаРезультата.Колонки.Добавить("Архитектура"); + ТаблицаРезультата.Колонки.Добавить("Ссылка"); + + ЧтениеJSON = Новый ЧтениеJSON(); + ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); + + МассивФайлов = ПрочитатьJSON(ЧтениеJSON, Ложь); + Для Каждого ОписаниеФайла Из МассивФайлов Цикл + СтрокаТаблицы = ТаблицаРезультата.Добавить(); + СтрокаТаблицы.Вид = ОписаниеФайла.id; + СтрокаТаблицы.ИмяФайла = ОписаниеФайла.filename; + СтрокаТаблицы.Архитектура = ОписаниеФайла.arch; + СтрокаТаблицы.Ссылка = ОписаниеФайла.link; + КонецЦикла; + + Возврат ТаблицаРезультата; + +КонецФункции + // <Описание функции> // // Возвращаемое значение: diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" index 4f6a8e5..06daa30 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" @@ -63,4 +63,19 @@ Возврат "\d+\.\d+\.\d+(\.rc\d+?)?"; КонецФункции +// Регулярное выражение версии по semver +// +// Возвращаемое значение: +// Строка - Регулярное выражение +// +Функция МаскаНомераВерсииSemver() Экспорт + // https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string + // https://regex101.com/r/vkijKf/1/ + + // BSLLS:LineLength-off + Возврат "^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$"; + // BSLLS:LineLength-on + +КонецФункции + СистемнаяИнформация = Новый СистемнаяИнформация; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index 865ccc3..e6e432b 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -304,15 +304,15 @@ КонецПроцедуры -Функция ЭтоТочныйНомерВерсии(ВерсияКУстановке) - РВ = Новый РегулярноеВыражение("^" + ПараметрыOVM.МаскаНомераВерсии() + "$"); +Функция ЭтоДопустимыйНомерВерсии(ВерсияКУстановке) + РВ = Новый РегулярноеВыражение(ПараметрыOVM.МаскаНомераВерсииSemver()); РВ.ИгнорироватьРегистр = Ложь; РВ.МногоСтрочный = Ложь; Возврат РВ.Совпадает(ВерсияКУстановке); КонецФункции Процедура ПроверитьКорректностьПереданнойВерсии(Знач ВерсияКУстановке) - Если НЕ ЭтоТочныйНомерВерсии(ВерсияКУстановке) + Если НЕ ЭтоДопустимыйНомерВерсии(ВерсияКУстановке) И Не ВерсииOneScript.ДопустимыеАлиасы().СодержитКлюч(ВерсияКУстановке) Тогда Лог.Ошибка("Версия имеет некорректный формат"); @@ -323,9 +323,9 @@ Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке, Знач ИспользоватьХ64, Знач ИспользоватьFDD) - Если ЭтоТочныйНомерВерсии(ВерсияКУстановке) Тогда + Если ЭтоДопустимыйНомерВерсии(ВерсияКУстановке) Тогда - КаталогВерсии = СтрЗаменить(ВерсияКУстановке, ".", "_"); + ИскомаяВерсия = ВерсияКУстановке; ЭтоВерсия2 = СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "2.0") >= 0; Иначе @@ -334,29 +334,49 @@ .Получить(ВерсияКУстановке) .ИначеВызватьИсключение("Ошибка получения пути к файлу по версии"); - КаталогВерсии = ДанныеВерсии.Метка; - ЭтоВерсия2 = ДанныеВерсии.ЭтоВерсия2; + ИскомаяВерсия = ДанныеВерсии.Метка; + // Когда v2 выйдет из preview мы не будем знать к какой версии относится алиас stable. + ЭтоВерсия2 = Неопределено; КонецЕсли; - Если ЭтоВерсия2 И ИспользоватьFDD Тогда - ИмяФайла = "fdd"; - ИначеЕсли ЭтоВерсия2 Тогда - ИмяФайла = ТипДистрибутиваТекущейПлатформы(); + Если ЭтоВерсия2 = Истина Тогда + ВидДистрибутива = ?(ИспользоватьFDD, "fdd", ТипДистрибутиваТекущейПлатформы()); + ИначеЕсли ЭтоВерсия2 = Ложь Тогда + ВидДистрибутива = "zip"; Иначе - ИмяФайла = "zip"; + // Это установка по алиасу и мы не знаем, версия 2 это или нет. + // Определим это с двух попыток ниже. + ВидДистрибутива = ТипДистрибутиваТекущейПлатформы(); КонецЕсли; - ЧастиПути = Новый Массив; - ЧастиПути.Добавить("downloads"); - ЧастиПути.Добавить(КаталогВерсии); - Если ИспользоватьХ64 Тогда - ЧастиПути.Добавить("x64"); + ПереченьФайлов = ВерсииOneScript.ПолучитьДоступныеВидыДистрибутивовВерсии(ИскомаяВерсия); + + КритерийПоиска = Новый Структура; + КритерийПоиска.Вставить("Вид", ВидДистрибутива); + + Если ВидДистрибутива = "scd-win" или ВидДистрибутива = "fdd" или ВидДистрибутива = "zip" Тогда + Если ИспользоватьХ64 Тогда + КритерийПоиска.Вставить("Архитектура", "x64"); + Иначе + КритерийПоиска.Вставить("Архитектура", "x86"); + КонецЕсли; + КонецЕсли; + + НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); + Если НайденныеСтроки.Количество() <> 1 Тогда + // Это может быть установка по алиасу и тогда есть шанс у дистрибутива zip для версии 1 + Если ЭтоВерсия2 = Неопределено Тогда + КритерийПоиска.Вид = "zip"; + КонецЕсли; + + НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); + Если НайденныеСтроки.Количество() <> 1 Тогда + ВызватьИсключение "Ошибка получения пути к файлу по версии"; + КонецЕсли; КонецЕсли; - ЧастиПути.Добавить(ИмяФайла); - Ресурс = СтрСоединить(ЧастиПути, "/"); - Возврат Ресурс; + Возврат НайденныеСтроки[0].Ссылка; КонецФункции From 29fbcad212ca02a3cc8eb16f4c6b412fa5921eb5 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Thu, 22 May 2025 20:16:07 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=80=D0=BA=D0=B5=D1=80=20=D0=AD=D1=82=D0=BE=D0=92?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F2=20=D0=B8=D0=B7=20=D0=BA=D0=B0?= =?UTF-8?q?=D1=80=D1=82=D1=8B=20=D0=B0=D0=BB=D0=B8=D0=B0=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...265\321\200\321\201\320\270\320\270OneScript.os" | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 6a9204b..9a52221 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -22,12 +22,12 @@ ДопустимыеАлиасы = Новый КартаСоответствие; - ДопустимыеАлиасы.Вставить("lts", Версия("lts", Ложь)); - ДопустимыеАлиасы.Вставить("stable", Версия("latest", Ложь)); - ДопустимыеАлиасы.Вставить("dev", Версия("night-build", Истина)); + ДопустимыеАлиасы.Вставить("lts", Версия("lts")); + ДопустимыеАлиасы.Вставить("stable", Версия("latest")); + ДопустимыеАлиасы.Вставить("dev", Версия("night-build")); - ДопустимыеАлиасы.Вставить("preview", Версия("preview", Истина)); - ДопустимыеАлиасы.Вставить("lts-dev", Версия("latest-dev", Ложь)); + ДопустимыеАлиасы.Вставить("preview", Версия("preview")); + ДопустимыеАлиасы.Вставить("lts-dev", Версия("latest-dev")); КонецЕсли; @@ -35,12 +35,11 @@ КонецФункции -Функция Версия(Метка, ЭтоВерсия2) +Функция Версия(Метка) Результат = Новый Структура; Результат.Вставить("Метка", Метка); - Результат.Вставить("ЭтоВерсия2", ЭтоВерсия2); Возврат Результат; From 97c649920776fbba458cc9771795ec205f00ee20 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 May 2025 08:50:00 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=BD=D0=B5=D0=BC=D0=BD=D0=BE=D0=B3=D0=BE?= =?UTF-8?q?=20=D1=80=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE=D1=80=D0=B8=D0=BD?= =?UTF-8?q?=D0=B3=D0=B0=20=D0=BF=D0=BE=20=D0=B8=D1=82=D0=BE=D0=B3=D0=B0?= =?UTF-8?q?=D0=BC=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...1\200\321\201\320\270\320\270OneScript.os" | 65 +++---------------- ...274\320\265\321\202\321\200\321\213OVM.os" | 9 --- ...0\262\321\211\320\270\320\272OneScript.os" | 8 ++- 3 files changed, 14 insertions(+), 68 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" index 9a52221..4ab5bd3 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\222\320\265\321\200\321\201\320\270\320\270OneScript.os" @@ -225,13 +225,8 @@ Таймаут ); - ДоступныеВерсии = ТаблицаДоступныхВерсий(); + Возврат ПолучитьВерсииПоAPI(Соединение); - Если Не ПолучитьВерсииПоAPI(Соединение, ДоступныеВерсии) Тогда - ПолучитьВерсииРазборомHTML(Соединение, ДоступныеВерсии); - КонецЕсли; - - Возврат ДоступныеВерсии; КонецФункции // Возвращает таблицу файлов конкретной версии @@ -404,25 +399,21 @@ КонецФункции -Функция ТаблицаДоступныхВерсий() - ДоступныеВерсии = Новый ТаблицаЗначений; - ДоступныеВерсии.Колонки.Добавить("Алиас"); - ДоступныеВерсии.Колонки.Добавить("Путь"); - - Возврат ДоступныеВерсии; -КонецФункции - -Функция ПолучитьВерсииПоAPI(Знач Соединение, Знач ДоступныеВерсии) +Функция ПолучитьВерсииПоAPI(Знач Соединение) Запрос = Новый HTTPЗапрос("api/archive"); Ответ = Соединение.Получить(Запрос); HTTP_OK = 200; Если Ответ.КодСостояния <> HTTP_OK Тогда - Возврат Ложь; + ВызватьИсключение СтрШаблон("Не удалось получить список версий с сайта. Код ошибки: %1", Ответ.КодСостояния); КонецЕсли; ЧтениеJSON = Новый ЧтениеJSON(); ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку()); + ДоступныеВерсии = Новый ТаблицаЗначений; + ДоступныеВерсии.Колонки.Добавить("Алиас"); + ДоступныеВерсии.Колонки.Добавить("Путь"); + АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); МассивВерсий = ПрочитатьJSON(ЧтениеJSON, Ложь); Для Каждого ОписаниеВерсии Из МассивВерсий Цикл @@ -437,49 +428,9 @@ ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); КонецЦикла; - Возврат Истина; + Возврат ДоступныеВерсии; КонецФункции -Процедура ПолучитьВерсииРазборомHTML(Знач Соединение, Знач ДоступныеВерсии) - Запрос = Новый HTTPЗапрос("downloads"); - - Ответ = Соединение.Получить(Запрос); - HTTP_OK = 200; - Если Ответ.КодСостояния <> HTTP_OK Тогда - ВызватьИсключение Ответ.КодСостояния; - КонецЕсли; - - ТелоСтраницы = Ответ.ПолучитьТелоКакСтроку(); - - РегулярноеВыражение = Новый РегулярноеВыражение( - "(" + ПараметрыOVM.МаскаНомераВерсии() + ")<"); - ИндексГруппыАдрес = 1; - ИндексГруппыВерсия = 2; - - АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт(); - Совпадения = РегулярноеВыражение.НайтиСовпадения(ТелоСтраницы); - Для Каждого СовпадениеРегулярногоВыражения Из Совпадения Цикл - ГруппаАдрес = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыАдрес]; - ГруппаВерсия = СовпадениеРегулярногоВыражения.Группы[ИндексГруппыВерсия]; - - // TODO: Убрать после решения https://github.com/EvilBeaver/OneScript/issues/667 - Если ГруппаВерсия.Значение = "1.0.9" Тогда - Продолжить; - КонецЕсли; - - ДоступнаяВерсия = ДоступныеВерсии.Добавить(); - ДоступнаяВерсия.Алиас = ГруппаВерсия.Значение; - ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение; - КонецЦикла; - - Итератор = ДопустимыеАлиасы().Ключи().Итератор(); - - Пока Итератор.ЕстьСледующий() Цикл - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); - КонецЦикла; - -КонецПроцедуры - Процедура ОбеспечитьСтрокуВерсииПоАлиасу(ТаблицаВерсий, Алиас, ИмяРеквизитаПуть = "ПутьСервер") СтрокаВерсии = ТаблицаВерсий.Найти(Алиас, "Алиас"); diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" index 06daa30..4367ff4 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\237\320\260\321\200\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" @@ -54,15 +54,6 @@ Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема; КонецФункции -// Регулярное выражение точного номера версии. -// -// Возвращаемое значение: -// Строка - Регулярное выражение -// -Функция МаскаНомераВерсии() Экспорт - Возврат "\d+\.\d+\.\d+(\.rc\d+?)?"; -КонецФункции - // Регулярное выражение версии по semver // // Возвращаемое значение: diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index e6e432b..25a44e6 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -352,6 +352,11 @@ ПереченьФайлов = ВерсииOneScript.ПолучитьДоступныеВидыДистрибутивовВерсии(ИскомаяВерсия); + Возврат НайтиПодходящийДистрибутив(ПереченьФайлов, ВидДистрибутива, ИспользоватьХ64, ЭтоВерсия2 = Неопределено); + +КонецФункции + +Функция НайтиПодходящийДистрибутив(Знач ПереченьФайлов, Знач ВидДистрибутива, Знач ИспользоватьХ64, Знач РежимАлиаса) КритерийПоиска = Новый Структура; КритерийПоиска.Вставить("Вид", ВидДистрибутива); @@ -366,7 +371,7 @@ НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); Если НайденныеСтроки.Количество() <> 1 Тогда // Это может быть установка по алиасу и тогда есть шанс у дистрибутива zip для версии 1 - Если ЭтоВерсия2 = Неопределено Тогда + Если РежимАлиаса Тогда КритерийПоиска.Вид = "zip"; КонецЕсли; @@ -377,7 +382,6 @@ КонецЕсли; Возврат НайденныеСтроки[0].Ссылка; - КонецФункции Функция ТипДистрибутиваТекущейПлатформы() From eddbb976aaaff0fc8cb13bdba5155ba8f9d0a9bf Mon Sep 17 00:00:00 2001 From: Andrei Ovsiankin Date: Fri, 23 May 2025 11:08:00 +0300 Subject: [PATCH 4/7] =?UTF-8?q?Suggestion=20=D0=BE=D1=82=20CodeRabbitAI:?= =?UTF-8?q?=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D1=81=D1=82=D0=B0=20=D0=B8=D1=81=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- ...\320\276\320\262\321\211\320\270\320\272OneScript.os" | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index 25a44e6..d48c13b 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -375,9 +375,16 @@ КритерийПоиска.Вид = "zip"; КонецЕсли; + НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); Если НайденныеСтроки.Количество() <> 1 Тогда - ВызватьИсключение "Ошибка получения пути к файлу по версии"; + ТекстОшибки = СтрШаблон( + "Не найден дистрибутив для критериев: Вид=%1, Архитектура=%2. Найдено файлов: %3", + КритерийПоиска.Вид, + ?(КритерийПоиска.Свойство("Архитектура"), КритерийПоиска.Архитектура, "<любая>"), + НайденныеСтроки.Количество() + ); + ВызватьИсключение ТекстОшибки; КонецЕсли; КонецЕсли; From 37ef620b37abad33d55220a45f525d22008501ba Mon Sep 17 00:00:00 2001 From: Andrei Ovsiankin Date: Fri, 23 May 2025 14:36:43 +0300 Subject: [PATCH 5/7] =?UTF-8?q?Update=20src/core/=D0=9A=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D1=8B/=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D1=89?= =?UTF-8?q?=D0=B8=D0=BAOneScript.os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- ...20\275\320\276\320\262\321\211\320\270\320\272OneScript.os" | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index d48c13b..464485f 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -376,7 +376,8 @@ КонецЕсли; НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); - НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); + НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); + Если НайденныеСтроки.Количество() <> 1 Тогда Если НайденныеСтроки.Количество() <> 1 Тогда ТекстОшибки = СтрШаблон( "Не найден дистрибутив для критериев: Вид=%1, Архитектура=%2. Найдено файлов: %3", From 63a2adbf8dc126283a85c201287a56b556487a83 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 May 2025 17:26:21 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=9A=D0=B0=D0=BA-=D1=82=D0=BE=20=D0=BA?= =?UTF-8?q?=D1=80=D0=B8=D0=B2=D0=BE=20=D0=B1=D1=8B=D0=BB=20=D0=B2=D0=BB?= =?UTF-8?q?=D0=B8=D1=82=20suggest=20=D1=81=20=D0=B3=D0=B8=D1=82=D1=85?= =?UTF-8?q?=D0=B0=D0=B1=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" | 2 -- 1 file changed, 2 deletions(-) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index 464485f..46883fa 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -376,8 +376,6 @@ КонецЕсли; НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); - НайденныеСтроки = ПереченьФайлов.НайтиСтроки(КритерийПоиска); - Если НайденныеСтроки.Количество() <> 1 Тогда Если НайденныеСтроки.Количество() <> 1 Тогда ТекстОшибки = СтрШаблон( "Не найден дистрибутив для критериев: Вид=%1, Архитектура=%2. Найдено файлов: %3", From c1aa46c63a5a741ee779becc6740c352b36d5e65 Mon Sep 17 00:00:00 2001 From: EvilBeaver Date: Fri, 23 May 2025 17:26:52 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20fdd=20=D0=BF=D0=BE=20=D1=84=D0=BB=D0=B0=D0=B3?= =?UTF-8?q?=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\275\320\276\320\262\321\211\320\270\320\272OneScript.os" | 3 +++ 1 file changed, 3 insertions(+) diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" index 46883fa..199f7e3 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\243\321\201\321\202\320\260\320\275\320\276\320\262\321\211\320\270\320\272OneScript.os" @@ -344,6 +344,9 @@ ВидДистрибутива = ?(ИспользоватьFDD, "fdd", ТипДистрибутиваТекущейПлатформы()); ИначеЕсли ЭтоВерсия2 = Ложь Тогда ВидДистрибутива = "zip"; + ИначеЕсли ИспользоватьFDD Тогда + ЭтоВерсия2 = Истина; + ВидДистрибутива = "fdd"; Иначе // Это установка по алиасу и мы не знаем, версия 2 это или нет. // Определим это с двух попыток ниже.