Skip to content

Commit 6581337

Browse files
committed
Merge branch 'feature/oscript-2' into develop
2 parents fbed2c5 + 5a3dde1 commit 6581337

File tree

3 files changed

+135
-28
lines changed

3 files changed

+135
-28
lines changed

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -222,19 +222,19 @@
222222
ТекстФайлаПрофиля = "export PATH=""" + ПутьККаталогуBin + ":$PATH""
223223
|export OSCRIPTBIN=""" + ПутьККаталогуBin + """";
224224

225-
ПутьКФайлу = ОбъединитьПути(
226-
СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя),
227-
".profile"
228-
);
229-
230-
ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу);
231-
232-
ПутьКФайлу = ОбъединитьПути(
233-
СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя),
234-
".bashrc"
235-
);
236-
237-
ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу);
225+
ИменаДляОбработки = Новый Массив;
226+
ИменаДляОбработки.Добавить(".profile");
227+
ИменаДляОбработки.Добавить(".bashrc");
228+
ИменаДляОбработки.Добавить(".zprofile");
229+
ИменаДляОбработки.Добавить(".zshrc");
230+
231+
КаталогПрофиля = СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя);
232+
Для Каждого ИмяФайла Из ИменаДляОбработки Цикл
233+
234+
ПутьКФайлу = ОбъединитьПути(КаталогПрофиля, ИмяФайла);
235+
ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу);
236+
237+
КонецЦикла;
238238

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

src/core/Классы/УстановщикOneScript.os

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -147,17 +147,37 @@
147147

148148
Процедура ДобавитьSHСкриптыПриНеобходимости(Знач КаталогУстановкиВерсии)
149149

150+
ЭтоКаталогВерсии2 = ВерсииOneScript.ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
150151
Если ЭтоWindows Тогда
152+
Если ЭтоКаталогВерсии2 Тогда
153+
154+
ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);
155+
ТекстСкрипта =
156+
"@dotnet %~dp0\oscript.dll %*
157+
|@exit /b %ERRORLEVEL%
158+
|";
159+
160+
ДобавитьBatСкрипт(ПутьКСкрипту, ТекстСкрипта);
161+
162+
КонецЕсли;
151163
Возврат;
152164
КонецЕсли;
153-
154-
ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
155-
ТекстСкрипта =
156-
"#!/bin/sh
157-
|dirpath=`dirname $0`
158-
|mono $dirpath/oscript.exe ""$@""
159-
|";
160-
165+
166+
ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);
167+
168+
Если ЭтоКаталогВерсии2 Тогда
169+
ТекстСкрипта =
170+
"#!/bin/sh
171+
|dirpath=`dirname $0`
172+
|dotnet $dirpath/oscript.dll ""$@""
173+
|";
174+
Иначе
175+
ТекстСкрипта =
176+
"#!/bin/sh
177+
|dirpath=`dirname $0`
178+
|mono $dirpath/oscript.exe ""$@""
179+
|";
180+
КонецЕсли;
161181
ДобавитьShСкрипт(ПутьКСкрипту, ТекстСкрипта);
162182

163183
ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "opm");
@@ -210,6 +230,30 @@
210230

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

233+
Процедура ДобавитьBatСкрипт(Знач ПутьКСкрипту, Знач ТекстСкрипта)
234+
235+
Лог.Информация("Создание bat-скрипта %1...", Новый Файл(ПутьКСкрипту).ИмяБезРасширения);
236+
237+
Лог.Отладка("Путь с bat-скрипту: %1", ПутьКСкрипту);
238+
239+
Лог.Отладка(
240+
"Текст скрипта:
241+
|%1",
242+
ТекстСкрипта
243+
);
244+
245+
Если ФС.ФайлСуществует(ПутьКСкрипту) Тогда
246+
Лог.Отладка("bat-скрипт уже существует");
247+
Возврат;
248+
КонецЕсли;
249+
250+
ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту, КодировкаТекста.ANSI, , , Символы.ПС);
251+
252+
ЗаписьТекста.Записать(ТекстСкрипта);
253+
ЗаписьТекста.Закрыть();
254+
255+
КонецПроцедуры
256+
213257
Процедура ПроверитьКорректностьПереданнойВерсии(Знач ВерсияКУстановке)
214258
Если СтрРазделить(ВерсияКУстановке, ".").Количество() <> ПараметрыOVM.КоличествоРазрядовВНомереВерсии()
215259
И НРег(ВерсияКУстановке) <> "stable"

src/core/Модули/ВерсииOneScript.os

Lines changed: 70 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
2020
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
2121

22-
Результат = ФС.КаталогСуществует(КаталогУстановкиВерсии);
23-
Результат = Результат И ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe"));
22+
СуществуетКаталогУстановкиВерсии = ФС.КаталогСуществует(КаталогУстановкиВерсии);
23+
СуществуетOscriptExe = ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe"));
24+
ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
25+
Результат = СуществуетКаталогУстановкиВерсии И (СуществуетOscriptExe ИЛИ ЭтоКаталогВерсии2);
2426

2527
Лог.Отладка("Версия %1 установлена: %2", ПроверяемаяВерсия, Результат);
2628
Возврат Результат;
@@ -57,6 +59,56 @@
5759

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

62+
// Проверяет, что переданный каталог является каталогом OneScript 2.0+
63+
//
64+
// Параметры:
65+
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
66+
//
67+
// Возвращаемое значение:
68+
// Булево
69+
//
70+
Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт
71+
Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll"));
72+
КонецФункции
73+
74+
// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
75+
//
76+
// Параметры:
77+
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
78+
//
79+
// Возвращаемое значение:
80+
// Строка - Путь к исполняемому файлу.
81+
//
82+
Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт
83+
84+
ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
85+
Если ЭтоWindows Тогда
86+
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".exe";
87+
КонецЕсли;
88+
89+
Возврат ПутьКИсполняемомуФайлу;
90+
91+
КонецФункции
92+
93+
// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
94+
//
95+
// Параметры:
96+
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
97+
//
98+
// Возвращаемое значение:
99+
// Строка - Путь к исполняемому файлу.
100+
//
101+
Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт
102+
103+
ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
104+
Если ЭтоWindows Тогда
105+
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлу + ".bat";
106+
КонецЕсли;
107+
108+
Возврат ПутьКИсполняемомуФайлу;
109+
110+
КонецФункции
111+
60112
// Получить информацию об установленных версиях
61113
//
62114
// Возвращаемое значение:
@@ -253,13 +305,13 @@
253305

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

256-
// Получить полный путь к установленному движку OneScript (файлу oscript.exe)
308+
// Получить полный путь к исполняемому файлу OneScript (файлу oscript.exe|oscript.bat|oscript)
257309
//
258310
// Параметры:
259311
// УстановленнаяВерсия - Строка - Алиас проверяемой версии
260312
//
261313
// Возвращаемое значение:
262-
// Строка - Полный путь к файлу oscript.exe
314+
// Строка - Полный путь к исполняемому файлу oscript
263315
//
264316
Функция ПолучитьПутьКУстановленномуДвижкуOneScript(Знач УстановленнаяВерсия) Экспорт
265317

@@ -270,7 +322,13 @@
270322
"Результат = Элемент.Алиас = ДополнительныеПараметры.УстановленнаяВерсия",
271323
Новый Структура("УстановленнаяВерсия", УстановленнаяВерсия))
272324
.Первые(1)
273-
.Обработать("Результат = ОбъединитьПути(Элемент.Путь, ""bin"", ""oscript.exe"")")
325+
.Обработать("
326+
|Если ВерсииOneScript.ЭтоКаталогВерсии2(Элемент.Путь) Тогда
327+
| Результат = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(Элемент.Путь);
328+
|Иначе
329+
| Результат = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии1(Элемент.Путь);
330+
|КонецЕсли;
331+
|")
274332
.ПолучитьПервый();
275333

276334
Возврат ПутьКУстановленнойВерсии;
@@ -294,11 +352,16 @@
294352

295353
КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
296354
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);
297-
ПутьКИсполняемомуФайлу = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.exe");
355+
ЭтоКаталогВерсии2 = ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
356+
Если ЭтоКаталогВерсии2 Тогда
357+
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);
358+
Иначе
359+
ПутьКИсполняемомуФайлу = ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии);
360+
КонецЕсли;
298361

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

301-
Если ЭтоWindows Тогда
364+
Если ЭтоWindows ИЛИ ЭтоКаталогВерсии2 Тогда
302365
Команда.УстановитьКоманду(ПутьКИсполняемомуФайлу);
303366
Иначе
304367
Команда.УстановитьКоманду("mono");

0 commit comments

Comments
 (0)