Skip to content

Commit f305711

Browse files
committed
1. Добавлена подпись установленный версии onescript на MacOS
2. Работа с окружением инкапсулирована внутри ДетекторОкружения
1 parent 71519b5 commit f305711

9 files changed

+129
-86
lines changed

src/cmd/Классы/КомандаInstall.os

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
&Пластилин
77
Перем УстановщикOneScript;
88

9-
&Пластилин
10-
Перем ПараметрыOVM;
9+
Перем Окружение;
1110

1211
&КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий")
13-
Процедура ПриСозданииОбъекта()
12+
Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения)
13+
Окружение = ДетекторОкружения;
1414
КонецПроцедуры
1515

1616
// Заполняет описание команды для библиотеки cli
@@ -27,7 +27,7 @@
2727
КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)")
2828
.ВОкружении("OVM_INSTALL_CLEAN");
2929

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

68-
Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
68+
Если Окружение.ЭтоX64() Тогда
6969
ДополнительныеПараметры.ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86");
7070
Иначе
7171
ДополнительныеПараметры.ИспользоватьХ64 = Ложь;

src/cmd/Классы/КомандаRun.os

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

3-
Перем ЭтоWindows;
4-
53
&Пластилин
64
Перем ПараметрыOVM;
75

@@ -25,8 +23,11 @@
2523
&ВОкружении("OVM_RUN_ARGS")
2624
Перем Аргументы;
2725

26+
Перем Окружение;
27+
2828
&КомандаПриложения(Имя = "run r", Описание = "Запустить исполняемый файл в окружении указанной версии OneScript")
29-
Процедура ПриСозданииОбъекта()
29+
Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения)
30+
Окружение = ДетекторОкружения;
3031
КонецПроцедуры
3132

3233
&ВыполнениеКоманды
@@ -37,7 +38,7 @@
3738
КаталогBin = ОбъединитьПути(КаталогУстановкиВерсии, "bin");
3839

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

5657
КонецПроцедуры
57-
58-
СистемнаяИнформация = Новый СистемнаяИнформация;
59-
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;

src/core/Классы/АктиваторOneScript.os

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
#Использовать 1commands
22
#Использовать fs
33

4-
Перем СистемнаяИнформация;
5-
Перем ЭтоWindows;
6-
74
&ЛогOVM
85
Перем Лог;
96

@@ -16,8 +13,11 @@
1613
&Пластилин
1714
Перем УстановщикOneScript;
1815

16+
Перем Окружение;
17+
1918
&Желудь
20-
Процедура ПриСозданииОбъекта()
19+
Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения)
20+
Окружение = ДетекторОкружения;
2121
КонецПроцедуры
2222

2323
// Активирует указанную версию OneScript.
@@ -63,7 +63,7 @@
6363

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

429429
КонецФункции
430-
431-
СистемнаяИнформация = Новый СистемнаяИнформация;
432-
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;

src/core/Классы/ВерсииOneScript.os

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212
&Пластилин
1313
Перем ПровайдерДистрибутивовВерсии;
1414

15-
Перем ЭтоWindows;
1615
Перем ДопустимыеАлиасы; // Кеш коллекции допустимых алиасов
16+
Перем Окружение;
1717

1818
&Желудь
19-
Процедура ПриСозданииОбъекта()
19+
Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения)
20+
Окружение = ДетекторОкружения;
2021
КонецПроцедуры
2122

2223
Функция ДопустимыеАлиасы() Экспорт
@@ -117,9 +118,9 @@
117118

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

120-
Если ЭтоWindows И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда
121+
Если Окружение.ЭтоWindows() И ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".exe") Тогда
121122
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe";
122-
ИначеЕсли ЭтоWindows Тогда
123+
ИначеЕсли Окружение.ЭтоWindows() Тогда
123124
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat";
124125
ИначеЕсли ФС.ФайлСуществует(ПутьКИсполняемомуФайлу + ".sh")
125126
И Не ФС.ФайлСуществует(ПутьКИсполняемомуФайлу) Тогда
@@ -174,7 +175,7 @@
174175

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

177-
Если ЭтоWindows Тогда
178+
Если Окружение.ЭтоWindows() Тогда
178179
Команда.УстановитьКоманду("dir");
179180
Иначе
180181
Команда.УстановитьКоманду("ls");
@@ -186,7 +187,7 @@
186187

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

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

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

396-
СистемнаяИнформация = Новый СистемнаяИнформация;
397-
ЭтоWindows = Найти(ВРег(СистемнаяИнформация.ВерсияОС), "WINDOWS") > 0;
Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#Использовать cpuinfo
22

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

56
&Табакерка
67
&Пластилин("Процессор")
@@ -9,12 +10,53 @@
910
&Желудь
1011
Процедура ПриСозданииОбъекта()
1112
СистемнаяИнформация = Новый СистемнаяИнформация();
13+
ТекущаяПлатформа = СистемнаяИнформация.ТипПлатформы;
1214
КонецПроцедуры
1315

14-
Функция ТипПлатформы() Экспорт
15-
Возврат СистемнаяИнформация.ТипПлатформы;
16+
Функция ЭтоWindows() Экспорт
17+
18+
Возврат ТекущаяПлатформа = ТипПлатформы.Windows_x86_64
19+
Или ТекущаяПлатформа = ТипПлатформы.Windows_x86;
20+
21+
КонецФункции
22+
23+
Функция ЭтоLinux() Экспорт
24+
25+
Возврат ТекущаяПлатформа = ТипПлатформы.Linux_x86_64
26+
Или ТекущаяПлатформа = ТипПлатформы.Linux_x86;
27+
28+
КонецФункции
29+
30+
Функция ЭтоMacOS() Экспорт
31+
32+
Возврат ТекущаяПлатформа = ТипПлатформы.MacOS_x86_64
33+
Или ТекущаяПлатформа = ТипПлатформы.MacOS_x86;
34+
35+
КонецФункции
36+
37+
Функция ЭтоMacOSARM() Экспорт
38+
39+
Если Не ЭтоMacOS() Тогда
40+
Возврат Ложь;
41+
КонецЕсли;
42+
43+
АрхитектураПроцессора = ПровайдерИнформацииОПроцессоре
44+
.Достать()
45+
.Архитектура;
46+
47+
Возврат АрхитектураПроцессора = АрхитектурыПроцессоров.ARM
48+
Или АрхитектураПроцессора = АрхитектурыПроцессоров.ARM64;
49+
50+
КонецФункции
51+
52+
Функция ПутьКПрофилюПользователя() Экспорт
53+
Возврат СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя);
54+
КонецФункции
55+
56+
Функция ПутьКЛокальнымДаннымПриложений() Экспорт
57+
Возврат СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений);
1658
КонецФункции
1759

18-
Функция АрхитектураПроцессора() Экспорт
19-
Возврат ПровайдерИнформацииОПроцессоре.Достать().Архитектура;
60+
Функция ЭтоX64() Экспорт
61+
Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема;
2062
КонецФункции

src/core/Классы/ОпределительДистрибутива.os

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -92,26 +92,14 @@
9292

9393
Функция ТипДистрибутиваТекущейПлатформы()
9494

95-
ТекущаяПлатформа = ДетекторОкружения.ТипПлатформы();
96-
97-
Если ТекущаяПлатформа = ТипПлатформы.Windows_x86_64
98-
Или ТекущаяПлатформа = ТипПлатформы.Windows_x86 Тогда
95+
Если ДетекторОкружения.ЭтоWindows() Тогда
9996
Возврат "scd-win";
100-
ИначеЕсли ТекущаяПлатформа = ТипПлатформы.Linux_x86_64
101-
Или ТекущаяПлатформа = ТипПлатформы.Linux_x86 Тогда
97+
ИначеЕсли ДетекторОкружения.ЭтоLinux() Тогда
10298
Возврат "scd-lin";
103-
ИначеЕсли ТекущаяПлатформа = ТипПлатформы.MacOS_x86_64
104-
Или ТекущаяПлатформа = ТипПлатформы.MacOS_x86 Тогда
105-
106-
АрхитектураПроцессора = ДетекторОкружения.АрхитектураПроцессора();
107-
108-
Если АрхитектураПроцессора = АрхитектурыПроцессоров.ARM
109-
Или АрхитектураПроцессора = АрхитектурыПроцессоров.ARM64 Тогда
110-
Возврат "osx-arm64";
111-
Иначе
112-
Возврат "osx-x64";
113-
КонецЕсли;
114-
99+
ИначеЕсли ДетекторОкружения.ЭтоMacOSARM() Тогда
100+
Возврат "osx-arm64";
101+
ИначеЕсли ДетекторОкружения.ЭтоMacOS() Тогда
102+
Возврат "osx-x64";
115103
Иначе
116104
ВызватьИсключение "Не удалось определить текущую операционную систему";
117105
КонецЕсли;

src/core/Классы/ПараметрыOVM.os

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

3-
Перем СистемнаяИнформация;
4-
53
&Деталька(Значение = "oscript.server", ЗначениеПоУмолчанию = "https://oscript.io")
64
Перем АдресСайтаОСкрипт;
75

6+
Перем Окружение;
7+
88
&Дуб
9-
Процедура ПриСозданииОбъекта()
10-
СистемнаяИнформация = Новый СистемнаяИнформация;
9+
Процедура ПриСозданииОбъекта(&Пластилин ДетекторОкружения)
10+
Окружение = ДетекторОкружения;
1111
КонецПроцедуры
1212

1313
// Путь к каталогу установки версий OneScript по умолчанию
@@ -21,7 +21,7 @@
2121
КаталогУстановкиПоУмолчанию = ПолучитьПеременнуюСреды("OVM_INSTALL_PATH");
2222
Если НЕ ЗначениеЗаполнено(КаталогУстановкиПоУмолчанию) Тогда
2323
КаталогУстановкиПоУмолчанию = ОбъединитьПути(
24-
СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ЛокальныйКаталогДанныхПриложений),
24+
Окружение.ПутьКЛокальнымДаннымПриложений(),
2525
"ovm"
2626
);
2727
КонецЕсли;
@@ -49,12 +49,3 @@
4949
Функция ПолныйАдресККаталогуДистрибутивов() Экспорт
5050
Возврат АдресСайтаОСкрипт() + "/downloads";
5151
КонецФункции
52-
53-
// Разрядность текущей операционной системы
54-
//
55-
// Возвращаемое значение:
56-
// Булево - это 64 битная операционна система
57-
&Завязь(Тип = "Булево")
58-
Функция Это64БитнаяОперационнаяСистема() Экспорт
59-
Возврат СистемнаяИнформация.Это64БитнаяОперационнаяСистема;
60-
КонецФункции

0 commit comments

Comments
 (0)