From 7ece32525ac0f093943e80e73c1973e8f10fad23 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Sun, 8 Jun 2025 11:13:31 +1000 Subject: [PATCH 1/2] =?UTF-8?q?1.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D1=8C?= =?UTF-8?q?=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8=20one?= =?UTF-8?q?script=20=D0=BD=D0=B0=20MacOS=202.=20=D0=A0=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=D1=81=20=D0=BE=D0=BA=D1=80=D1=83=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B8=D0=BD=D0=BA=D0=B0=D0=BF=D1=81?= =?UTF-8?q?=D1=83=D0=BB=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B0=20=D0=B2?= =?UTF-8?q?=D0=BD=D1=83=D1=82=D1=80=D0=B8=20=D0=94=D0=B5=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=9E=D0=BA=D1=80=D1=83=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...320\260\320\275\320\264\320\260Install.os" | 10 ++-- ...274\320\260\320\275\320\264\320\260Run.os" | 12 ++--- ...0\260\321\202\320\276\321\200OneScript.os" | 37 +++++++------- ...1\200\321\201\320\270\320\270OneScript.os" | 15 +++--- ...20\266\320\265\320\275\320\270\321\217.os" | 50 +++++++++++++++++-- ...21\203\321\202\320\270\320\262\320\260.os" | 24 +++------ ...274\320\265\321\202\321\200\321\213OVM.os" | 19 ++----- ...0\262\321\211\320\270\320\272OneScript.os" | 36 ++++++++++--- tests/distrSelectorTests.os | 13 +++-- 9 files changed, 130 insertions(+), 86 deletions(-) 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 6ca9914..5cc1ce5 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" @@ -6,11 +6,11 @@ &Пластилин Перем УстановщикOneScript; -&Пластилин -Перем ПараметрыOVM; +Перем Окружение; &КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий") -Процедура ПриСозданииОбъекта() +Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) + Окружение = ДетекторОкружения; КонецПроцедуры // Заполняет описание команды для библиотеки cli @@ -27,7 +27,7 @@ КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)") .ВОкружении("OVM_INSTALL_CLEAN"); - Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда + Если Окружение.ЭтоX64() Тогда КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript") .ВОкружении("OVM_INSTALL_X86"); КонецЕсли; @@ -65,7 +65,7 @@ ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript"; КонецЕсли; - Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда + Если Окружение.ЭтоX64() Тогда ДополнительныеПараметры.ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86"); Иначе ДополнительныеПараметры.ИспользоватьХ64 = Ложь; 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\260Run.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\260Run.os" index dee13d3..6c1322c 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\260Run.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\260Run.os" @@ -1,7 +1,5 @@ #Использовать "../../core" -Перем ЭтоWindows; - &Пластилин Перем ПараметрыOVM; @@ -25,8 +23,11 @@ &ВОкружении("OVM_RUN_ARGS") Перем Аргументы; +Перем Окружение; + &КомандаПриложения(Имя = "run r", Описание = "Запустить исполняемый файл в окружении указанной версии OneScript") -Процедура ПриСозданииОбъекта() +Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) + Окружение = ДетекторОкружения; КонецПроцедуры &ВыполнениеКоманды @@ -37,7 +38,7 @@ КаталогBin = ОбъединитьПути(КаталогУстановкиВерсии, "bin"); ПеременнаяPATH = ПолучитьПеременнуюСреды("PATH"); - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда ПеременнаяPATH = КаталогBin + ";" + ПеременнаяPATH; Иначе ПеременнаяPATH = КаталогBin + ":" + ПеременнаяPATH; @@ -54,6 +55,3 @@ Команда.Исполнить(); КонецПроцедуры - -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 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 d663696..7450d94 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" @@ -1,9 +1,6 @@ #Использовать 1commands #Использовать fs -Перем СистемнаяИнформация; -Перем ЭтоWindows; - &ЛогOVM Перем Лог; @@ -16,8 +13,11 @@ &Пластилин Перем УстановщикOneScript; +Перем Окружение; + &Желудь -Процедура ПриСозданииОбъекта() +Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) + Окружение = ДетекторОкружения; КонецПроцедуры // Активирует указанную версию OneScript. @@ -63,7 +63,7 @@ Лог.Отладка("Удаляю старую символическую ссылку"); - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда УдалитьФайлы(ПутьКСсылке); Иначе Команда = Новый Команда; @@ -78,7 +78,7 @@ Лог.Отладка("Выполняю создание символической ссылки"); - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда Команда = Новый Команда; Команда.УстановитьКоманду("mklink"); Команда.ДобавитьПараметр("/J"); @@ -107,7 +107,7 @@ Лог.Отладка("Добавляю каталог %1 в PATH", ПутьККаталогуBin); - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда ПеременнаяPATH = ПолучитьПеременнуюСредыИзРеестра("PATH", РасположениеПеременнойСреды.Пользователь); ИскомоеЗначение = "%OVM_OSCRIPTBIN%"; Иначе @@ -119,7 +119,7 @@ ИскомоеЗначение = ПутьККаталогуBin; КонецЕсли; - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда СоздатьПереопределенияPATHДляКомандногоПроцессора_Windows(); КонецЕсли; @@ -128,7 +128,7 @@ Возврат; КонецЕсли; - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда Лог.Отладка("Установка переменных среды на уровне пользователя"); ЗначениеПеременнойСреды = "%OVM_OSCRIPTBIN%;" + ПеременнаяPATH; УстановитьПеременнуюСредыВРеестре("PATH", "REG_EXPAND_SZ", ЗначениеПеременнойСреды, @@ -143,7 +143,7 @@ Процедура ДобавитьТекстВНовыйИлиИмеющийсяФайл(Знач ДобавляемыйТекст, Знач ПутьКФайлу) - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда РазделительСтрок = Символы.ВК + Символы.ПС; Иначе РазделительСтрок = Символы.ПС; @@ -220,11 +220,11 @@ Лог.Отладка("Добавление ovm в автозапуск powershell"); ПутьКФайлу = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя), - "Documents", - "WindowsPowerShell", - "profile.ps1" - ); + Окружение.ПутьКПрофилюПользователя(), + "Documents", + "WindowsPowerShell", + "profile.ps1" + ); ТекстВычислениеPATH = "set PATH=$OVM_OSCRIPTBIN;$PATH"; ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстВычислениеPATH, ПутьКФайлу); @@ -243,7 +243,7 @@ ИменаДляОбработки.Добавить(".zprofile"); ИменаДляОбработки.Добавить(".zshrc"); - КаталогПрофиля = СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя); + КаталогПрофиля = Окружение.ПутьКПрофилюПользователя(); Для Каждого ИмяФайла Из ИменаДляОбработки Цикл ПутьКФайлу = ОбъединитьПути(КаталогПрофиля, ИмяФайла); @@ -261,7 +261,7 @@ Если ВыполнятьУстановкуПриНеобходимости Тогда ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки(); - ДополнительныеПараметры.ИспользоватьХ64 = СистемнаяИнформация.Это64БитнаяОперационнаяСистема; + ДополнительныеПараметры.ИспользоватьХ64 = Окружение.ЭтоX64(); УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , ДополнительныеПараметры); Иначе @@ -427,6 +427,3 @@ Возврат Результат; КонецФункции - -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; 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 66eec04..0eb39d7 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" @@ -12,11 +12,12 @@ &Пластилин Перем ПровайдерДистрибутивовВерсии; -Перем ЭтоWindows; Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов +Перем Окружение; &Желудь -Процедура ПриСозданииОбъекта() +Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) + Окружение = ДетекторОкружения; КонецПроцедуры Функция ДопустимыеАлиасы() Экспорт @@ -117,9 +118,9 @@ ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript"); - Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда + Если Окружение.ЭтоWindows() И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe"; - ИначеЕсли ЭтоWindows Тогда + ИначеЕсли Окружение.ЭтоWindows() Тогда ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat"; ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh") И Не ФС.ФайлСуществует(ПутьКИсполняемомуФайлу) Тогда @@ -174,7 +175,7 @@ Команда = Новый Команда(); - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда Команда.УстановитьКоманду("dir"); Иначе Команда.УстановитьКоманду("ls"); @@ -186,7 +187,7 @@ ВыводКоманды = Команда.ПолучитьВывод(); - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда Выражение = "(|)\s*(.+?)\s*\[(.+)\]"; Иначе Выражение = "l.+?(\d\d:\d\d)\s*(.+?)\s*->\s*(.+)"; @@ -393,5 +394,3 @@ КонецФункции -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\321\202\320\265\320\272\321\202\320\276\321\200\320\236\320\272\321\200\321\203\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\224\320\265\321\202\320\265\320\272\321\202\320\276\321\200\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" index c5e963a..ade90dc 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\224\320\265\321\202\320\265\320\272\321\202\320\276\321\200\320\236\320\272\321\200\321\203\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\224\320\265\321\202\320\265\320\272\321\202\320\276\321\200\320\236\320\272\321\200\321\203\320\266\320\265\320\275\320\270\321\217.os" @@ -1,6 +1,7 @@ #Использовать cpuinfo Перем СистемнаяИнформация; +Перем ТекущаяПлатформа; &Табакерка &Пластилин("Процессор") @@ -9,12 +10,53 @@ &Желудь Процедура ПриСозданииОбъекта() СистемнаяИнформация = Новый СистемнаяИнформация(); + ТекущаяПлатформа = СистемнаяИнформация.ТипПлатформы; КонецПроцедуры -Функция ТипПлатформы() Экспорт - Возврат СистемнаяИнформация.ТипПлатформы; +Функция ЭтоWindows() Экспорт + + Возврат ТекущаяПлатформа = ТипПлатформы.Windows_x86_64 + Или ТекущаяПлатформа = ТипПлатформы.Windows_x86; + +КонецФункции + +Функция ЭтоLinux() Экспорт + + Возврат ТекущаяПлатформа = ТипПлатформы.Linux_x86_64 + Или ТекущаяПлатформа = ТипПлатформы.Linux_x86; + +КонецФункции + +Функция ЭтоMacOS() Экспорт + + Возврат ТекущаяПлатформа = ТипПлатформы.MacOS_x86_64 + Или ТекущаяПлатформа = ТипПлатформы.MacOS_x86; + +КонецФункции + +Функция ЭтоMacOSARM() Экспорт + + Если Не ЭтоMacOS() Тогда + Возврат Ложь; + КонецЕсли; + + АрхитектураПроцессора = ПровайдерИнформацииОПроцессоре + .Достать() + .Архитектура; + + Возврат АрхитектураПроцессора = АрхитектурыПроцессоров.ARM + Или АрхитектураПроцессора = АрхитектурыПроцессоров.ARM64; + +КонецФункции + +Функция ПутьКПрофилюПользователя() Экспорт + Возврат СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя); +КонецФункции + +Функция ПутьКЛокальнымДаннымПриложений() Экспорт + Возврат СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений); КонецФункции -Функция АрхитектураПроцессора() Экспорт - Возврат ПровайдерИнформацииОПроцессоре.Достать().Архитектура; +Функция ЭтоX64() Экспорт + Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема; КонецФункции diff --git "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\270\321\202\320\265\320\273\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\270\321\202\320\265\320\273\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" index 1671b68..f35ba37 100644 --- "a/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\270\321\202\320\265\320\273\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" +++ "b/src/core/\320\232\320\273\320\260\321\201\321\201\321\213/\320\236\320\277\321\200\320\265\320\264\320\265\320\273\320\270\321\202\320\265\320\273\321\214\320\224\320\270\321\201\321\202\321\200\320\270\320\261\321\203\321\202\320\270\320\262\320\260.os" @@ -92,26 +92,14 @@ Функция ТипДистрибутиваТекущейПлатформы() - ТекущаяПлатформа = ДетекторОкружения.ТипПлатформы(); - - Если ТекущаяПлатформа = ТипПлатформы.Windows_x86_64 - Или ТекущаяПлатформа = ТипПлатформы.Windows_x86 Тогда + Если ДетекторОкружения.ЭтоWindows() Тогда Возврат "scd-win"; - ИначеЕсли ТекущаяПлатформа = ТипПлатформы.Linux_x86_64 - Или ТекущаяПлатформа = ТипПлатформы.Linux_x86 Тогда + ИначеЕсли ДетекторОкружения.ЭтоLinux() Тогда Возврат "scd-lin"; - ИначеЕсли ТекущаяПлатформа = ТипПлатформы.MacOS_x86_64 - Или ТекущаяПлатформа = ТипПлатформы.MacOS_x86 Тогда - - АрхитектураПроцессора = ДетекторОкружения.АрхитектураПроцессора(); - - Если АрхитектураПроцессора = АрхитектурыПроцессоров.ARM - Или АрхитектураПроцессора = АрхитектурыПроцессоров.ARM64 Тогда - Возврат "osx-arm64"; - Иначе - Возврат "osx-x64"; - КонецЕсли; - + ИначеЕсли ДетекторОкружения.ЭтоMacOSARM() Тогда + Возврат "osx-arm64"; + ИначеЕсли ДетекторОкружения.ЭтоMacOS() Тогда + Возврат "osx-x64"; Иначе ВызватьИсключение "Не удалось определить текущую операционную систему"; КонецЕсли; 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 fa5e47d..d36c596 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" @@ -1,13 +1,13 @@ #Использовать logos -Перем СистемнаяИнформация; - &Деталька(Значение = "oscript.server", ЗначениеПоУмолчанию = "https://oscript.io") Перем АдресСайтаОСкрипт; +Перем Окружение; + &Дуб -Процедура ПриСозданииОбъекта() - СистемнаяИнформация = Новый СистемнаяИнформация; +Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) + Окружение = ДетекторОкружения; КонецПроцедуры // Путь к каталогу установки версий OneScript по умолчанию @@ -21,7 +21,7 @@ КаталогУстановкиПоУмолчанию = ПолучитьПеременнуюСреды("OVM_INSTALL_PATH"); Если НЕ ЗначениеЗаполнено(КаталогУстановкиПоУмолчанию) Тогда КаталогУстановкиПоУмолчанию = ОбъединитьПути( - СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений), + Окружение.ПутьКЛокальнымДаннымПриложений(), "ovm" ); КонецЕсли; @@ -49,12 +49,3 @@ Функция ПолныйАдресККаталогуДистрибутивов() Экспорт Возврат АдресСайтаОСкрипт() + "/downloads"; КонецФункции - -// Разрядность текущей операционной системы -// -// Возвращаемое значение: -// Булево - это 64 битная операционна система -&Завязь(Тип = "Булево") -Функция Это64БитнаяОперационнаяСистема() Экспорт - Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема; -КонецФункции 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 b1aadf3..6e76619 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" @@ -3,8 +3,6 @@ #Использовать tempfiles #Использовать strings -Перем ЭтоWindows; - &ЛогOVM Перем Лог; @@ -21,8 +19,11 @@ &Пластилин("ОпределительДистрибутива") Перем КоробочкаСОпределителями; +Перем Окружение; + &Желудь -Процедура ПриСозданииОбъекта() +Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) + Окружение = ДетекторОкружения; КонецПроцедуры // Конструктор дополнительных параметров установки OneScript @@ -97,6 +98,8 @@ УстановитьOneScriptИзZipАрхива(ФайлУстановщика, КаталогУстановкиВерсии); ДобавитьSHСкриптыПриНеобходимости(КаталогУстановкиВерсии); УстановитьРазрешениеДляSHСкриптовПриНеобходимости(КаталогУстановкиВерсии); + ПодписатьOneScriptДляMacOS(КаталогУстановкиВерсии); + Исключение УдалитьФайлы(КаталогУстановкиВерсии); ВызватьИсключение ОписаниеОшибки(); @@ -153,7 +156,7 @@ Процедура ДобавитьSHСкриптыПриНеобходимости(Знач КаталогУстановкиВерсии) - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда Возврат; КонецЕсли; @@ -215,7 +218,7 @@ Процедура УстановитьРазрешениеДляSHСкриптовПриНеобходимости(КаталогУстановкиВерсии) - Если ЭтоWindows Тогда + Если Окружение.ЭтоWindows() Тогда Возврат; КонецЕсли; @@ -299,5 +302,24 @@ КонецФункции -СистемнаяИнформация = Новый СистемнаяИнформация; -ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0; +Процедура ПодписатьOneScriptДляMacOS(КаталогУстановкиВерсии) + + Если Не Окружение.ЭтоMacOS() Тогда + Возврат; + КонецЕсли; + + Команда = Новый Команда; + + Команда.УстановитьКоманду("codesign"); + Команда.ДобавитьПараметр("-f"); + Команда.ДобавитьПараметр("-s"); + Команда.ДобавитьПараметр("-"); + Команда.ДобавитьПараметр(ВерсииOneScript.ПутьКИсполняемомуФайлу(КаталогУстановкиВерсии)); + + Команда.УстановитьПравильныйКодВозврата(0); + + Команда.Исполнить(); + + Лог.Отладка(Команда.ПолучитьВывод()); + +КонецПроцедуры diff --git a/tests/distrSelectorTests.os b/tests/distrSelectorTests.os index 00b285f..d2a629f 100644 --- a/tests/distrSelectorTests.os +++ b/tests/distrSelectorTests.os @@ -273,9 +273,16 @@ КонецЕсли; МокСИ = Мок.Получить(Новый ДетекторОкружения); - МокСИ.Когда().ТипПлатформы().ТогдаВозвращает(ВидПлатформы); - МокСИ.Когда().АрхитектураПроцессора().ТогдаВозвращает(Архитектура); - + + МокСИ.Когда().ЭтоWindows().ТогдаВозвращает(СтрНачинаетсяС(ВидПлатформы, "Windows")); + МокСИ.Когда().ЭтоLinux().ТогдаВозвращает(СтрНачинаетсяС(ВидПлатформы, "Linux")); + МокСИ.Когда().ЭтоMacOS().ТогдаВозвращает(СтрНачинаетсяС(ВидПлатформы, "MacOS")); + + МокСИ.Когда().ЭтоMacOSARM().ТогдаВозвращает( + СтрНачинаетсяС(ВидПлатформы, "MacOS") + И Архитектура = АрхитектурыПроцессоров.ARM64 Или Архитектура = АрхитектурыПроцессоров.ARM + ); + Возврат МокСИ; КонецФункции From ab2977c49bc5f979ae91b0f4eb5a34498aefca32 Mon Sep 17 00:00:00 2001 From: sfaqer Date: Sun, 8 Jun 2025 14:02:02 +1000 Subject: [PATCH 2/2] =?UTF-8?q?=D0=92=D0=BD=D0=B5=D0=B4=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=81=D1=82=D1=80?= =?UTF-8?q?=D1=83=D0=BA=D1=82=D0=BE=D1=80=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BD=D0=B0=20=D0=B2=D0=BD=D0=B5=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...20\276\320\274\320\260\320\275\320\264\320\260Install.os" | 4 ++-- ...32\320\276\320\274\320\260\320\275\320\264\320\260Run.os" | 4 ++-- ...\270\320\262\320\260\321\202\320\276\321\200OneScript.os" | 4 ++-- ...\222\320\265\321\200\321\201\320\270\320\270OneScript.os" | 5 +++-- ...00\320\260\320\274\320\265\321\202\321\200\321\213OVM.os" | 4 ++-- ...\275\320\276\320\262\321\211\320\270\320\272OneScript.os" | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) 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 5cc1ce5..e72bf04 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" @@ -6,11 +6,11 @@ &Пластилин Перем УстановщикOneScript; +&Пластилин("ДетекторОкружения") Перем Окружение; &КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий") -Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) - Окружение = ДетекторОкружения; +Процедура ПриСозданииОбъекта() КонецПроцедуры // Заполняет описание команды для библиотеки cli 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\260Run.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\260Run.os" index 6c1322c..39fba85 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\260Run.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\260Run.os" @@ -23,11 +23,11 @@ &ВОкружении("OVM_RUN_ARGS") Перем Аргументы; +&Пластилин("ДетекторОкружения") Перем Окружение; &КомандаПриложения(Имя = "run r", Описание = "Запустить исполняемый файл в окружении указанной версии OneScript") -Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) - Окружение = ДетекторОкружения; +Процедура ПриСозданииОбъекта() КонецПроцедуры &ВыполнениеКоманды 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 7450d94..a6bb2aa 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" @@ -13,11 +13,11 @@ &Пластилин Перем УстановщикOneScript; +&Пластилин("ДетекторОкружения") Перем Окружение; &Желудь -Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) - Окружение = ДетекторОкружения; +Процедура ПриСозданииОбъекта() КонецПроцедуры // Активирует указанную версию OneScript. 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 0eb39d7..c562ffe 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" @@ -13,11 +13,12 @@ Перем ПровайдерДистрибутивовВерсии; Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов + +&Пластилин("ДетекторОкружения") Перем Окружение; &Желудь -Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) - Окружение = ДетекторОкружения; +Процедура ПриСозданииОбъекта() КонецПроцедуры Функция ДопустимыеАлиасы() Экспорт 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 d36c596..878f2cd 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" @@ -3,11 +3,11 @@ &Деталька(Значение = "oscript.server", ЗначениеПоУмолчанию = "https://oscript.io") Перем АдресСайтаОСкрипт; +&Пластилин("ДетекторОкружения") Перем Окружение; &Дуб -Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) - Окружение = ДетекторОкружения; +Процедура ПриСозданииОбъекта() КонецПроцедуры // Путь к каталогу установки версий OneScript по умолчанию 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 6e76619..73a9999 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" @@ -19,11 +19,11 @@ &Пластилин("ОпределительДистрибутива") Перем КоробочкаСОпределителями; +&Пластилин("ДетекторОкружения") Перем Окружение; &Желудь -Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения) - Окружение = ДетекторОкружения; +Процедура ПриСозданииОбъекта() КонецПроцедуры // Конструктор дополнительных параметров установки OneScript