Skip to content
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

Поддержка onescript 2 #15

Merged
merged 2 commits into from
Dec 26, 2022
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
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СкриптыПриНеобходимости(Знач КаталогУстановкиВерсии)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nixel2007, странное имя метода "осталось". Вроде речь про sh, а внутри развлекается с флажками win или нет.


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

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

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

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

ПутьКСкрипту = ОбъединитьПути(КаталогУстановкиВерсии, "bin", "oscript");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nixel2007, совместимость для 1 и win держать не будет? или это где-то еще делается или поставляется?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В 1.х oscript развернётся до oscript.exe в шелле. Должен, по крайней мере)

ТекстСкрипта =
"#!/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