diff --git a/packagedef b/packagedef index 6ce02d7..0c6008e 100644 --- a/packagedef +++ b/packagedef @@ -1,5 +1,5 @@ Описание.Имя("ovm") - .Версия("1.0.0") + .Версия("1.2.0") .Автор("Nikita Gryzlov") .АдресАвтора("nixel2007@gmail.com") .Описание("OneScript Version Manager") @@ -14,5 +14,7 @@ .ЗависитОт("autumn", "3.2.0") .ЗависитОт("autumn-logos", "1.1.1") .ЗависитОт("autumn-cli", "1.0.3") + .ЗависитОт("collectionos", "0.3.0") + .РазработкаЗависитОт("1bdd", "1.13.0") .ИсполняемыйФайл("src/cmd/ovm.os", "ovm") ; diff --git "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" index 5922dfd..6ca9914 100644 --- "a/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" +++ "b/src/cmd/\320\232\320\273\320\260\321\201\321\201\321\213/\320\232\320\276\320\274\320\260\320\275\320\264\320\260Install.os" @@ -20,7 +20,7 @@ // Процедура ОписаниеКоманды(КомандаПриложения) Экспорт - КомандаПриложения.Опция("name", "", "Синоним (алиас) устанавливаемой версии для последущего использования в ovm use") + КомандаПриложения.Опция("name", "", "Синоним (алиас) устанавливаемой версии для последующего использования в ovm use") .ТСтрока() .ВОкружении("OVM_INSTALL_NAME"); @@ -32,11 +32,15 @@ .ВОкружении("OVM_INSTALL_X86"); КонецЕсли; + КомандаПриложения.Опция("fdd", Ложь, "Устанавливать fdd дистрибутив OneScript (требует установленный .NET для работы)") + .ВОкружении("OVM_INSTALL_FDD"); + КомандаПриложения.Аргумент( "VERSION", , "Устанавливаемая версия (версии) OneScript. " + - "Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev. " + + "Допустимо использовать трехномерные версии (1.0.17, 1.0.18), " + + "lts, stable, dev, preview, lts-dev " + "Может быть передано несколько значений") .ТМассивСтрок() .ВОкружении("OVM_INSTALL_VERSION"); @@ -52,20 +56,25 @@ МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION"); АлиасВерсии = КомандаПриложения.ЗначениеОпции("name"); - ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean"); + + ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки(); + + ДополнительныеПараметры.ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean"); Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript"; КонецЕсли; Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда - ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86"); + ДополнительныеПараметры.ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86"); Иначе - ИспользоватьХ64 = Ложь; + ДополнительныеПараметры.ИспользоватьХ64 = Ложь; КонецЕсли; + ДополнительныеПараметры.ИспользоватьFDD = КомандаПриложения.ЗначениеОпции("fdd"); + Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл - УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64); + УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ДополнительныеПараметры); КонецЦикла; Если МассивВерсийКУстановке.Количество() > 0 Тогда diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" index 5c5b70a..14978f3 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\220\320\272\321\202\320\270\320\262\320\260\321\202\320\276\321\200OneScript.os" @@ -258,7 +258,11 @@ Если ВыполнятьУстановкуПриНеобходимости Тогда УстановщикOneScript = Новый УстановщикOneScript(); - УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , , СистемнаяИнформация.Это64БитнаяОперационнаяСистема); + + ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки(); + ДополнительныеПараметры.ИспользоватьХ64 = СистемнаяИнформация.Это64БитнаяОперационнаяСистема; + + УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , ДополнительныеПараметры); Иначе ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия); КонецЕсли; 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 5ce9edc..fb0c4c6 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" @@ -1,6 +1,7 @@ #Использовать 1commands #Использовать fluent #Использовать fs +#Использовать collectionos &ЛогOVM Перем Лог; @@ -9,11 +10,42 @@ Перем ПараметрыOVM; Перем ЭтоWindows; +Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов &Желудь Процедура ПриСозданииОбъекта() КонецПроцедуры +Функция ДопустимыеАлиасы() Экспорт + + Если ДопустимыеАлиасы = Неопределено Тогда + + ДопустимыеАлиасы = Новый КартаСоответствие; + + ДопустимыеАлиасы.Вставить("lts", Версия("lts", Ложь)); + ДопустимыеАлиасы.Вставить("stable", Версия("latest", Ложь)); + ДопустимыеАлиасы.Вставить("dev", Версия("night-build", Истина)); + + ДопустимыеАлиасы.Вставить("preview", Версия("preview", Истина)); + ДопустимыеАлиасы.Вставить("lts-dev", Версия("latest-dev", Ложь)); + + КонецЕсли; + + Возврат ДопустимыеАлиасы; + +КонецФункции + +Функция Версия(Метка, ЭтоВерсия2) + + Результат = Новый Структура; + + Результат.Вставить("Метка", Метка); + Результат.Вставить("ЭтоВерсия2", ЭтоВерсия2); + + Возврат Результат; + +КонецФункции + // Проверить, что версия установлена // // Параметры: @@ -28,9 +60,13 @@ КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии); - СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")); - ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); - Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2); + СуществуетИсполняемыйФайл = + ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe")) // SCD + Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript")) // SCD + Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.bat")) // FDD + Или ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.sh")); // FDD + + Результат = СуществуетКаталогУстановкиВерсии И СуществуетИсполняемыйФайл; Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат); Возврат Результат; @@ -67,19 +103,7 @@ КонецФункции -// Проверяет, что переданный каталог является каталогом OneScript 2.0+ -// -// Параметры: -// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. -// -// Возвращаемое значение: -// Булево -// -Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт - Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll")); -КонецФункции - -// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. +// Получает путь к исполняемому файлу OneScript // // Параметры: // КаталогУстановкиВерсии - Строка - Путь к конкретной версии. @@ -87,31 +111,17 @@ // Возвращаемое значение: // Строка - Путь к исполняемому файлу. // -Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт +Функция ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии) Экспорт ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - Если ЭтоWindows Тогда + + Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe"; - КонецЕсли; - - Возврат ПутьКИсполняемомуФайлу; - -КонецФункции - -// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x. -// -// Параметры: -// КаталогУстановкиВерсии - Строка - Путь к конкретной версии. -// -// Возвращаемое значение: -// Строка - Путь к исполняемому файлу. -// -Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт - - ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - Если ЭтоWindows Тогда + ИначеЕсли ЭтоWindows Тогда ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat"; - КонецЕсли; + ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh") Тогда + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".sh"; + КонецЕсли; // BSLLS:IfElseIfEndsWithElse-off Возврат ПутьКИсполняемомуФайлу; @@ -249,8 +259,11 @@ ДоступнаяВерсия.Путь = АдресСайтаОСкрипт + ГруппаАдрес.Значение; КонецЦикла; - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "dev", "Путь"); - ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, "stable", "Путь"); + Итератор = ДопустимыеАлиасы().Ключи().Итератор(); + + Пока Итератор.ЕстьСледующий() Цикл + ОбеспечитьСтрокуВерсииПоАлиасу(ДоступныеВерсии, Итератор.Следующий(), "Путь"); + КонецЦикла; Возврат ДоступныеВерсии; @@ -291,24 +304,27 @@ СтрокаВсеВерсии.ПутьСервер = ДоступнаяВерсия.Путь; КонецЦикла; - Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл + Для Каждого УстановленнаяВерсия Из СписокУстановленныхВерсий Цикл СтрокаВсеВерсии = ВсеВерсии.Найти(УстановленнаяВерсия.Алиас, "Алиас"); Если СтрокаВсеВерсии = Неопределено Тогда СтрокаВсеВерсии = ВсеВерсии.Добавить(); СтрокаВсеВерсии.Алиас = УстановленнаяВерсия.Алиас; - СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк; + СтрокаВсеВерсии.ЭтоСимлинк = УстановленнаяВерсия.ЭтоСимлинк; КонецЕсли; - + СтрокаВсеВерсии.Версия = УстановленнаяВерсия.Версия; СтрокаВсеВерсии.ПутьЛокальный = УстановленнаяВерсия.Путь; СтрокаВсеВерсии.ВерсияУстановлена = Истина; КонецЦикла; - - ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "dev"); - ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, "stable"); + + Итератор = ДопустимыеАлиасы().Ключи().Итератор(); + + Пока Итератор.ЕстьСледующий() Цикл + ОбеспечитьСтрокуВерсииПоАлиасу(ВсеВерсии, Итератор.Следующий()); + КонецЦикла; ВсеВерсии.Сортировать("Алиас"); - + Возврат ВсеВерсии; КонецФункции @@ -331,13 +347,7 @@ Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия) ) .Первые(1) - .Обработать("(Элемент) -> - |Если ЭтоКаталогВерсии2(Элемент.Путь) Тогда - | Возврат ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь); - |Иначе - | Возврат ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь); - |КонецЕсли; - |", ЭтотОбъект) + .Обработать("(Элемент) -> ПутьКИсполняемомуФайлу(Элемент.Путь);", ЭтотОбъект) .ПолучитьПервый(); Возврат ПутьКУстановленнойВерсии; @@ -361,13 +371,8 @@ КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию(); КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия); - ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии); - Если ЭтоКаталогВерсии2 Тогда - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); - Иначе - ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии); - КонецЕсли; - + ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии); + Команда = Новый Команда(); Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу); Команда.ДобавитьПараметр("-version"); 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\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.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\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" index dc1d6af..0432f39 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\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.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\213\320\237\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\321\217.os" @@ -12,5 +12,5 @@ КонецФункции Функция ВерсияПриложения() Экспорт - Возврат "1.1.0"; + Возврат "1.2.0"; КонецФункции 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 2b0fe22..6075e54 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" @@ -36,6 +36,26 @@ Процедура ПриСозданииОбъекта() КонецПроцедуры +// Конструктор дополнительных параметров установки OneScript +// +// Возвращаемое значение: +// Структура - Дополнительные параметры установки: +// * ОчищатьКаталогУстановки - Булево - Необходимость очистки каталога, в который устанавливается версия +// * ИспользоватьХ64 - Булево - Устанавливать версию x64 +// * ИспользоватьFDD - Булево - Устанавливать fdd дистрибутив версии 2.0 +// +Функция ДополнительныеПараметрыУстановки() Экспорт + + Результат = Новый Структура; + + Результат.Вставить("ОчищатьКаталогУстановки", Истина); + Результат.Вставить("ИспользоватьХ64", Ложь); + Результат.Вставить("ИспользоватьFDD", Ложь); + + Возврат Результат; + +КонецФункции + // Установка указанной версии OneScript. // Допустимо использовать трех-разрядные номера версий и шорткаты dev и stable // @@ -43,15 +63,21 @@ // ВерсияКУстановке - Строка - Имя версии, которую необходимо установить // АлиасВерсии - Строка - Имя каталога, в который необходимо установить OneScript. По умолчанию совпадает и // ВерсияКУстановке -// ОчищатьКаталогУстановки - Булево - Необходимость очистки каталога, в который устанавливается версия. +// ДополнительныеПараметры - см. УстановщикOneScript.ДополнительныеПараметрыУстановки // Процедура УстановитьOneScript( - Знач ВерсияКУстановке, - Знач АлиасВерсии = "", - Знач ОчищатьКаталогУстановки = Истина, - Знач ИспользоватьХ64 = Ложь -) Экспорт + Знач ВерсияКУстановке, + Знач АлиасВерсии = "", + Знач ДополнительныеПараметры = Неопределено) Экспорт + Если ДополнительныеПараметры = Неопределено Тогда + ДополнительныеПараметры = ДополнительныеПараметрыУстановки(); + КонецЕсли; + + ОчищатьКаталогУстановки = ДополнительныеПараметры.ОчищатьКаталогУстановки; + ИспользоватьХ64 = ДополнительныеПараметры.ИспользоватьХ64; + ИспользоватьFDD = ДополнительныеПараметры.ИспользоватьFDD; + Если ИспользоватьХ64 Тогда ИспользоватьХ64 = ПроверитьВозможностьУстановкиX64(ВерсияКУстановке); КонецЕсли; @@ -77,7 +103,7 @@ Лог.Отладка("Каталог установки версии: %1", КаталогУстановкиВерсии); Попытка - ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке, ИспользоватьХ64); + ФайлУстановщика = СкачатьФайлУстановщика(ВерсияКУстановке, ИспользоватьХ64, ИспользоватьFDD); УстановитьOneScriptИзZipАрхива(ФайлУстановщика, КаталогУстановкиВерсии); ДобавитьSHСкриптыПриНеобходимости(КаталогУстановкиВерсии); @@ -91,7 +117,7 @@ КонецПроцедуры -Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке, Знач ИспользоватьХ64) +Функция СкачатьФайлУстановщика(Знач ВерсияКУстановке, Знач ИспользоватьХ64, Знач ИспользоватьFDD) Лог.Информация("Скачиваю установщик версии %1%2...", ВерсияКУстановке, ?(ИспользоватьХ64, "-x64", "")); @@ -143,7 +169,7 @@ Таймаут ); - Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке, ИспользоватьХ64); + Ресурс = ПолучитьПутьКСкачиваниюФайла(ВерсияКУстановке, ИспользоватьХ64, ИспользоватьFDD); Запрос = Новый HTTPЗапрос(Ресурс); Лог.Отладка("Сервер: %1. Ресурс: %2", Соединение.Сервер, Ресурс); @@ -181,26 +207,14 @@ Процедура ДобавитьSHСкриптыПриНеобходимости(Знач КаталогУстановкиВерсии) - ЭтоКаталогВерсии2 = ВерсииOneScript.ЭтоКаталогВерсии2(КаталогУстановкиВерсии); Если ЭтоWindows Тогда - Если ЭтоКаталогВерсии2 Тогда - - ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); - ТекстСкрипта = - "@dotnet %~dp0\oscript.dll %* - |@exit /b %ERRORLEVEL% - |"; - - ДобавитьBatСкрипт(ПутьКСкрипту, ТекстСкрипта); - - КонецЕсли; Возврат; КонецЕсли; - ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии); + ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии); - Если ЭтоКаталогВерсии2 Тогда - ТекстСкрипта = + Если Не ФС.ФайлСуществует(ПутьКСкрипту + ".exe") Тогда + ТекстСкрипта = "#!/bin/sh |dirpath=`dirname $0` |dotnet $dirpath/oscript.dll ""$@"" @@ -215,7 +229,7 @@ ДобавитьShСкрипт(ПутьКСкрипту, ТекстСкрипта); ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "opm"); - ТекстСкрипта = + ТекстСкрипта = "#!/bin/sh |dirpath=`dirname $0` |opmpath=$dirpath/../lib/opm/src/opm.os @@ -264,34 +278,9 @@ КонецПроцедуры -Процедура ДобавитьBatСкрипт(Знач ПутьКСкрипту, Знач ТекстСкрипта) - - Лог.Информация("Создание bat-скрипта %1...", Новый Файл(ПутьКСкрипту).ИмяБезРасширения); - - Лог.Отладка("Путь с bat-скрипту: %1", ПутьКСкрипту); - - Лог.Отладка( - "Текст скрипта: - |%1", - ТекстСкрипта - ); - - Если ФС.ФайлСуществует(ПутьКСкрипту) Тогда - Лог.Отладка("bat-скрипт уже существует"); - Возврат; - КонецЕсли; - - ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту, КодировкаТекста.ANSI, , , Символы.ПС); - - ЗаписьТекста.Записать(ТекстСкрипта); - ЗаписьТекста.Закрыть(); - -КонецПроцедуры - Процедура ПроверитьКорректностьПереданнойВерсии(Знач ВерсияКУстановке) Если СтрРазделить(ВерсияКУстановке, ".").Количество() <> ПараметрыOVM.КоличествоРазрядовВНомереВерсии() - И НРег(ВерсияКУстановке) <> "stable" - И НРег(ВерсияКУстановке) <> "dev" Тогда + И Не ВерсииOneScript.ДопустимыеАлиасы().СодержитКлюч(ВерсияКУстановке) Тогда Лог.Ошибка("Версия имеет некорректный формат"); @@ -299,19 +288,33 @@ КонецЕсли; КонецПроцедуры -Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке, Знач ИспользоватьХ64) - +Функция ПолучитьПутьКСкачиваниюФайла(Знач ВерсияКУстановке, Знач ИспользоватьХ64, Знач ИспользоватьFDD) + Если СтрРазделить(ВерсияКУстановке, ".").Количество() = ПараметрыOVM.КоличествоРазрядовВНомереВерсии() Тогда + КаталогВерсии = СтрЗаменить(ВерсияКУстановке, ".", "_"); - ИначеЕсли НРег(ВерсияКУстановке) = "stable" Тогда - КаталогВерсии = "latest"; - ИначеЕсли НРег(ВерсияКУстановке) = "dev" Тогда - КаталогВерсии = "night-build"; + ЭтоВерсия2 = СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "2.0") >= 0; + Иначе - ВызватьИсключение "Ошибка получения пути к файлу по версии"; + + ДанныеВерсии = ВерсииOneScript.ДопустимыеАлиасы() + .Получить(ВерсияКУстановке) + .ИначеВызватьИсключение("Ошибка получения пути к файлу по версии"); + + КаталогВерсии = ДанныеВерсии.Метка; + ЭтоВерсия2 = ДанныеВерсии.ЭтоВерсия2; + КонецЕсли; - ИмяФайла = "zip"; - + + Если ЭтоВерсия2 И ИспользоватьFDD Тогда + ИмяФайла = "fdd"; + ИначеЕсли ЭтоВерсия2 Тогда + СистемнаяИнформация = Новый СистемнаяИнформация; + ИмяФайла = ТипДистрибутиваПоТипуПлатформы().Получить(СистемнаяИнформация.ТипПлатформы); + Иначе + ИмяФайла = "zip"; + КонецЕсли; + ЧастиПути = Новый Массив; ЧастиПути.Добавить("downloads"); ЧастиПути.Добавить(КаталогВерсии); @@ -325,14 +328,28 @@ КонецФункции +Функция ТипДистрибутиваПоТипуПлатформы() + + Результат = Новый Соответствие; + + Результат.Вставить(ТипПлатформы.Windows_x86_64, "scd-win"); + Результат.Вставить(ТипПлатформы.Windows_x86, "scd-win"); + Результат.Вставить(ТипПлатформы.Linux_x86_64, "scd-lin"); + Результат.Вставить(ТипПлатформы.Linux_x86, "scd-lin"); + Результат.Вставить(ТипПлатформы.MacOS_x86_64, "osx-x64"); + Результат.Вставить(ТипПлатформы.MacOS_x86, "osx-x64"); + + // TODO: Как определить что это MacOS_ARM? osx-arm64 + + Возврат Результат; + +КонецФункции + Функция ПроверитьВозможностьУстановкиX64(ВерсияКУстановке) - // Версия х64 доступна для версий 1.2.0 и выше - Если НРег(ВерсияКУстановке) = "stable" - Или НРег(ВерсияКУстановке) = "dev" Тогда - Возврат Истина; - Иначе - Возврат СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "1.2.0") >= 0; - КонецЕсли; + + Возврат ВерсииOneScript.ДопустимыеАлиасы().СодержитКлюч(ВерсияКУстановке) + Или СтроковыеФункции.СравнитьВерсии(ВерсияКУстановке, "1.2.0") >= 0; + КонецФункции СистемнаяИнформация = Новый СистемнаяИнформация;