Skip to content

Подпись для MacOS и немного рефакторинга #45

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
&Пластилин
Перем УстановщикOneScript;

&Пластилин
Перем ПараметрыOVM;
&Пластилин("ДетекторОкружения")
Перем Окружение;

&КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий")
Процедура ПриСозданииОбъекта()
Expand All @@ -27,7 +27,7 @@
КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)")
.ВОкружении("OVM_INSTALL_CLEAN");

Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
Если Окружение.ЭтоX64() Тогда
КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript")
.ВОкружении("OVM_INSTALL_X86");
КонецЕсли;
Expand Down Expand Up @@ -65,7 +65,7 @@
ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript";
КонецЕсли;

Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
Если Окружение.ЭтоX64() Тогда
ДополнительныеПараметры.ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86");
Иначе
ДополнительныеПараметры.ИспользоватьХ64 = Ложь;
Expand Down
10 changes: 4 additions & 6 deletions src/cmd/Классы/КомандаRun.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
#Использовать "../../core"

Перем ЭтоWindows;

&Пластилин
Перем ПараметрыOVM;

Expand All @@ -25,6 +23,9 @@
&ВОкружении("OVM_RUN_ARGS")
Перем Аргументы;

&Пластилин("ДетекторОкружения")
Перем Окружение;

&КомандаПриложения(Имя = "run r", Описание = "Запустить исполняемый файл в окружении указанной версии OneScript")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Expand All @@ -37,7 +38,7 @@
КаталогBin = ОбъединитьПути(КаталогУстановкиВерсии, "bin");

ПеременнаяPATH = ПолучитьПеременнуюСреды("PATH");
Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
ПеременнаяPATH = КаталогBin + ";" + ПеременнаяPATH;
Иначе
ПеременнаяPATH = КаталогBin + ":" + ПеременнаяPATH;
Expand All @@ -54,6 +55,3 @@
Команда.Исполнить();

КонецПроцедуры

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
35 changes: 16 additions & 19 deletions src/core/Классы/АктиваторOneScript.os
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
#Использовать 1commands
#Использовать fs

Перем СистемнаяИнформация;
Перем ЭтоWindows;

&ЛогOVM
Перем Лог;

Expand All @@ -16,6 +13,9 @@
&Пластилин
Перем УстановщикOneScript;

&Пластилин("ДетекторОкружения")
Перем Окружение;

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Expand Down Expand Up @@ -63,7 +63,7 @@

Лог.Отладка("Удаляю старую символическую ссылку");

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
УдалитьФайлы(ПутьКСсылке);
Иначе
Команда = Новый Команда;
Expand All @@ -78,7 +78,7 @@

Лог.Отладка("Выполняю создание символической ссылки");

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
Команда = Новый Команда;
Команда.УстановитьКоманду("mklink");
Команда.ДобавитьПараметр("/J");
Expand Down Expand Up @@ -107,7 +107,7 @@

Лог.Отладка("Добавляю каталог %1 в PATH", ПутьККаталогуBin);

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
ПеременнаяPATH = ПолучитьПеременнуюСредыИзРеестра("PATH", РасположениеПеременнойСреды.Пользователь);
ИскомоеЗначение = "%OVM_OSCRIPTBIN%";
Иначе
Expand All @@ -119,7 +119,7 @@
ИскомоеЗначение = ПутьККаталогуBin;
КонецЕсли;

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
СоздатьПереопределенияPATHДляКомандногоПроцессора_Windows();
КонецЕсли;

Expand All @@ -128,7 +128,7 @@
Возврат;
КонецЕсли;

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
Лог.Отладка("Установка переменных среды на уровне пользователя");
ЗначениеПеременнойСреды = "%OVM_OSCRIPTBIN%;" + ПеременнаяPATH;
УстановитьПеременнуюСредыВРеестре("PATH", "REG_EXPAND_SZ", ЗначениеПеременнойСреды,
Expand All @@ -143,7 +143,7 @@

Процедура ДобавитьТекстВНовыйИлиИмеющийсяФайл(Знач ДобавляемыйТекст, Знач ПутьКФайлу)

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
РазделительСтрок = Символы.ВК + Символы.ПС;
Иначе
РазделительСтрок = Символы.ПС;
Expand Down Expand Up @@ -220,11 +220,11 @@
Лог.Отладка("Добавление ovm в автозапуск powershell");

ПутьКФайлу = ОбъединитьПути(
СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя),
"Documents",
"WindowsPowerShell",
"profile.ps1"
);
Окружение.ПутьКПрофилюПользователя(),
"Documents",
"WindowsPowerShell",
"profile.ps1"
);

ТекстВычислениеPATH = "set PATH=$OVM_OSCRIPTBIN;$PATH";
ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстВычислениеPATH, ПутьКФайлу);
Expand All @@ -243,7 +243,7 @@
ИменаДляОбработки.Добавить(".zprofile");
ИменаДляОбработки.Добавить(".zshrc");

КаталогПрофиля = СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя);
КаталогПрофиля = Окружение.ПутьКПрофилюПользователя();
Для Каждого ИмяФайла Из ИменаДляОбработки Цикл

ПутьКФайлу = ОбъединитьПути(КаталогПрофиля, ИмяФайла);
Expand All @@ -261,7 +261,7 @@

Если ВыполнятьУстановкуПриНеобходимости Тогда
ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки();
ДополнительныеПараметры.ИспользоватьХ64 = СистемнаяИнформация.Это64БитнаяОперационнаяСистема;
ДополнительныеПараметры.ИспользоватьХ64 = Окружение.ЭтоX64();

УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , ДополнительныеПараметры);
Иначе
Expand Down Expand Up @@ -427,6 +427,3 @@
Возврат Результат;

КонецФункции

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
14 changes: 7 additions & 7 deletions src/core/Классы/ВерсииOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@
&Пластилин
Перем ПровайдерДистрибутивовВерсии;

Перем ЭтоWindows;
Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов

&Пластилин("ДетекторОкружения")
Перем Окружение;

&Желудь
Процедура ПриСозданииОбъекта()
КонецПроцедуры
Expand Down Expand Up @@ -117,9 +119,9 @@

ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");

Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда
Если Окружение.ЭтоWindows() И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe";
ИначеЕсли ЭтоWindows Тогда
ИначеЕсли Окружение.ЭтоWindows() Тогда
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat";
ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh")
И Не ФС.ФайлСуществует(ПутьКИсполняемомуФайлу) Тогда
Expand Down Expand Up @@ -174,7 +176,7 @@

Команда = Новый Команда();

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
Команда.УстановитьКоманду("dir");
Иначе
Команда.УстановитьКоманду("ls");
Expand All @@ -186,7 +188,7 @@

ВыводКоманды = Команда.ПолучитьВывод();

Если ЭтоWindows Тогда
Если Окружение.ЭтоWindows() Тогда
Выражение = "(<JUNCTION>|<SYMLINKD>)\s*(.+?)\s*\[(.+)\]";
Иначе
Выражение = "l.+?(\d\d:\d\d)\s*(.+?)\s*->\s*(.+)";
Expand Down Expand Up @@ -393,5 +395,3 @@

КонецФункции

СистемнаяИнформация = Новый СистемнаяИнформация;
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
50 changes: 46 additions & 4 deletions src/core/Классы/ДетекторОкружения.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Использовать cpuinfo

Перем СистемнаяИнформация;
Перем ТекущаяПлатформа;

&Табакерка
&Пластилин("Процессор")
Expand All @@ -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БитнаяОперационнаяСистема;
КонецФункции
Original file line number Diff line number Diff line change
Expand Up @@ -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";
Иначе
ВызватьИсключение "Не удалось определить текущую операционную систему";
КонецЕсли;
Expand Down
17 changes: 4 additions & 13 deletions src/core/Классы/ПараметрыOVM.os
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
#Использовать logos

Перем СистемнаяИнформация;

&Деталька(Значение = "oscript.server", ЗначениеПоУмолчанию = "https://oscript.io")
Перем АдресСайтаОСкрипт;

&Пластилин("ДетекторОкружения")
Перем Окружение;

&Дуб
Процедура ПриСозданииОбъекта()
СистемнаяИнформация = Новый СистемнаяИнформация;
КонецПроцедуры

// Путь к каталогу установки версий OneScript по умолчанию
Expand All @@ -21,7 +21,7 @@
КаталогУстановкиПоУмолчанию = ПолучитьПеременнуюСреды("OVM_INSTALL_PATH");
Если НЕ ЗначениеЗаполнено(КаталогУстановкиПоУмолчанию) Тогда
КаталогУстановкиПоУмолчанию = ОбъединитьПути(
СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений),
Окружение.ПутьКЛокальнымДаннымПриложений(),
"ovm"
);
КонецЕсли;
Expand Down Expand Up @@ -49,12 +49,3 @@
Функция ПолныйАдресККаталогуДистрибутивов() Экспорт
Возврат АдресСайтаОСкрипт() + "/downloads";
КонецФункции

// Разрядность текущей операционной системы
//
// Возвращаемое значение:
// Булево - это 64 битная операционна система
&Завязь(Тип = "Булево")
Функция Это64БитнаяОперационнаяСистема() Экспорт
Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема;
КонецФункции
Loading