Skip to content

Commit

Permalink
Merge branch 'feature/oscript-2' into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Dec 26, 2022
2 parents fbed2c5 + 5a3dde1 commit 6581337
Show file tree
Hide file tree
Showing 3 changed files with 135 additions and 28 deletions.
26 changes: 13 additions & 13 deletions src/core/Классы/АктиваторOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -222,19 +222,19 @@
ТекстФайлаПрофиля = "export PATH=""" + ПутьККаталогуBin + ":$PATH""
|export OSCRIPTBIN=""" + ПутьККаталогуBin + """";

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

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

ПутьКФайлу = ОбъединитьПути(
СистемнаяИнформация.ПолучитьПутьПапки(СпециальнаяПапка.ПрофильПользователя),
".bashrc"
);
ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу);
ИменаДляОбработки = Новый Массив;
ИменаДляОбработки.Добавить(".profile");
ИменаДляОбработки.Добавить(".bashrc");
ИменаДляОбработки.Добавить(".zprofile");
ИменаДляОбработки.Добавить(".zshrc");

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

ПутьКФайлу = ОбъединитьПути(КаталогПрофиля, ИмяФайла);
ДобавитьТекстВНовыйИлиИмеющийсяФайл(ТекстФайлаПрофиля, ПутьКФайлу);

КонецЦикла;

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

Expand Down
60 changes: 52 additions & 8 deletions src/core/Классы/УстановщикOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -147,17 +147,37 @@

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

ЭтоКаталогВерсии2 = ВерсииOneScript.ЭтоКаталогВерсии2(КаталогУстановкиВерсии);
Если ЭтоWindows Тогда
Если ЭтоКаталогВерсии2 Тогда

ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);
ТекстСкрипта =
"@dotnet %~dp0\oscript.dll %*
|@exit /b %ERRORLEVEL%
|";

ДобавитьBatСкрипт(ПутьКСкрипту, ТекстСкрипта);

КонецЕсли;
Возврат;
КонецЕсли;

ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
ТекстСкрипта =
"#!/bin/sh
|dirpath=`dirname $0`
|mono $dirpath/oscript.exe ""$@""
|";


ПутьКСкрипту = ВерсииOneScript.ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии);

Если ЭтоКаталогВерсии2 Тогда
ТекстСкрипта =
"#!/bin/sh
|dirpath=`dirname $0`
|dotnet $dirpath/oscript.dll ""$@""
|";
Иначе
ТекстСкрипта =
"#!/bin/sh
|dirpath=`dirname $0`
|mono $dirpath/oscript.exe ""$@""
|";
КонецЕсли;
ДобавитьShСкрипт(ПутьКСкрипту, ТекстСкрипта);

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

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

Процедура ДобавитьBatСкрипт(Знач ПутьКСкрипту, Знач ТекстСкрипта)

Лог.Информация("Создание bat-скрипта %1...", Новый Файл(ПутьКСкрипту).ИмяБезРасширения);

Лог.Отладка("Путь с bat-скрипту: %1", ПутьКСкрипту);

Лог.Отладка(
"Текст скрипта:
|%1",
ТекстСкрипта
);

Если ФС.ФайлСуществует(ПутьКСкрипту) Тогда
Лог.Отладка("bat-скрипт уже существует");
Возврат;
КонецЕсли;

ЗаписьТекста = Новый ЗаписьТекста(ПутьКСкрипту, КодировкаТекста.ANSI, , , Символы.ПС);

ЗаписьТекста.Записать(ТекстСкрипта);
ЗаписьТекста.Закрыть();

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

Процедура ПроверитьКорректностьПереданнойВерсии(Знач ВерсияКУстановке)
Если СтрРазделить(ВерсияКУстановке, ".").Количество() <> ПараметрыOVM.КоличествоРазрядовВНомереВерсии()
И НРег(ВерсияКУстановке) <> "stable"
Expand Down
77 changes: 70 additions & 7 deletions src/core/Модули/ВерсииOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@
КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ПроверяемаяВерсия);

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

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

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

// Проверяет, что переданный каталог является каталогом OneScript 2.0+
//
// Параметры:
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
//
// Возвращаемое значение:
// Булево
//
Функция ЭтоКаталогВерсии2(КаталогУстановкиВерсии) Экспорт
Возврат ФС.ФайлСуществует(ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript.dll"));
КонецФункции

// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
//
// Параметры:
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
//
// Возвращаемое значение:
// Строка - Путь к исполняемому файлу.
//
Функция ПутьКИсполняемомуФайлуВерсии1(КаталогУстановкиВерсии) Экспорт

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

Возврат ПутьКИсполняемомуФайлу;

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

// Получает путь к исполняемому файлу OneScript по шаблону версии 1.x.
//
// Параметры:
// КаталогУстановкиВерсии - Строка - Путь к конкретной версии.
//
// Возвращаемое значение:
// Строка - Путь к исполняемому файлу.
//
Функция ПутьКИсполняемомуФайлуВерсии2(КаталогУстановкиВерсии) Экспорт

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

Возврат ПутьКИсполняемомуФайлу;

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

// Получить информацию об установленных версиях
//
// Возвращаемое значение:
Expand Down Expand Up @@ -253,13 +305,13 @@

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

// Получить полный путь к установленному движку OneScript (файлу oscript.exe)
// Получить полный путь к исполняемому файлу OneScript (файлу oscript.exe|oscript.bat|oscript)
//
// Параметры:
// УстановленнаяВерсия - Строка - Алиас проверяемой версии
//
// Возвращаемое значение:
// Строка - Полный путь к файлу oscript.exe
// Строка - Полный путь к исполняемому файлу oscript
//
Функция ПолучитьПутьКУстановленномуДвижкуOneScript(Знач УстановленнаяВерсия) Экспорт

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

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

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

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

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

0 comments on commit 6581337

Please sign in to comment.