Skip to content

Commit

Permalink
Merge pull request #16 from oscript-library/develop
Browse files Browse the repository at this point in the history
dev to master
  • Loading branch information
nixel2007 authored Oct 1, 2023
2 parents 9b01219 + 522353c commit 186e1bd
Show file tree
Hide file tree
Showing 27 changed files with 1,033 additions and 848 deletions.
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export $HOME/.local/share/ovm/current/bin:$PATH

Для `ConEmu` активация производится через `Settings` -> `Startup` -> `Environment`. В метод установки PATH необходимо добавить путь к %OVM_OSCRIPTBIN% перед текущим `%PATH%`. Например, `set PATH=%OVM_OSCRIPTBIN%;%PATH%`

Современные версии `Cmder` для Windows автоматически подхватывают переменные среды и переопределение автозапуска в реестре (см. <a href="use_cmd">Активация в cmd</a>)
Современные версии `Cmder` для Windows автоматически подхватывают переменные среды и переопределение автозапуска в реестре (см. <a href="#cmd-windows">Активация в cmd</a>)

## Использование

Expand Down Expand Up @@ -170,6 +170,22 @@ $ ovm which 1.0.19
C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
```

### Отладка скриптов, запускаемых через OVM, в VSCode

После первичной настройки OVM в каталоге вашего проекта нужно штатно настроить отладчик 1скрипт

Далее нужно добавить\изменить файл `.vscode/launch.json`

В разделе `configurations` файла нужно добавить\установить следующие строки
```json
"windows": {
"runtimeExecutable": "${env:OVM_OSCRIPTBIN}\\oscript.exe"
},
"linux": {
"runtimeExecutable": "${env:OVM_OSCRIPTBIN}/oscript"
}
```

## Конфигурирование ovm

ovm имеет несколько конфигурационных параметров, управляющих его поведением. Эти параметры можно задать с помощью команды `config`
Expand Down
2 changes: 1 addition & 1 deletion features/install-with-alias.feature
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Функциональность: Установка движка с алиасом

Как разработчик библиотек
Я иметь возможность установить несколько версий одного и того же движка
Я хочу иметь возможность установить несколько версий одного и того же движка
Чтобы тестировать свою библиотеку с разным набором системных пакетов

Контекст:
Expand Down
2 changes: 1 addition & 1 deletion features/install-with-clean.feature
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Функциональность: Установка движка с учетом сохранения библиотек

Как пользователь OneScript
Я иметь возможность обновлять движок без последующей переустановки библиотек
Я хочу иметь возможность обновлять движок без последующей переустановки библиотек
Чтобы не тратить свое время

Контекст:
Expand Down
22 changes: 21 additions & 1 deletion features/integration.feature
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
Сценарий: Вывод справки
Когда Я выполняю команду "ovm"
Тогда я вижу в консоли вывод "OneScript Version Manager"
И я вижу в консоли вывод "Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]"
И я вижу в консоли вывод "Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]"

Сценарий: Вывод версии
Когда Я выполняю команду "ovm -v"
Expand All @@ -32,6 +32,17 @@
И Я выполняю команду "ovm use stable"
Тогда я вижу в консоли вывод "OneScript stable активирован"

Сценарий: Удаление версии тождественной текущей
Когда Я выполняю команду "ovm install --name latest stable"
Тогда я вижу в консоли вывод "Установка OneScript stable..."
И я вижу в консоли вывод "Установка OneScript stable завершена"
И я вижу в консоли вывод "ovm use latest"

Когда Я выполняю команду "ovm delete latest"
Тогда Я Показываю вывод команды
И я не вижу в консоли вывод "Версия <latest> не удалена, т.к. является текущей."
И я вижу в консоли вывод "Версия latest удалена"

Сценарий: Проверка использования версии
Когда Я выполняю команду "ovm ls"
И Я Показываю вывод команды
Expand All @@ -40,3 +51,12 @@
И я вижу в консоли строку подобно ".*oscript$"
И Я выполняю команду "which opm"
И я вижу в консоли строку подобно ".*opm$"

Сценарий: Проверка установки x64 и опции --x86
Когда Я выполняю команду "ovm install stable"
Тогда я вижу в консоли вывод "Скачиваю установщик версии stable-x64..."
И я вижу в консоли вывод "Установка OneScript stable завершена"

Когда Я выполняю команду "ovm install --x86 stable"
Тогда я вижу в консоли вывод "Скачиваю установщик версии stable..."
И я вижу в консоли вывод "Установка OneScript stable завершена"
8 changes: 7 additions & 1 deletion features/step_definitions/install-with-alias.os
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,13 @@
//Я удаляю каталог "./temp/ovm"
Процедура ЯУдаляюКаталог(Знач ПутьККаталогу) Экспорт
Если ФС.Существует(ПутьККаталогу) Тогда
УдалитьФайлы(Новый Файл(ПутьККаталогу).ПолноеИмя);
ПолноеИмя = Новый Файл(ПутьККаталогу).ПолноеИмя;

// Обход ошибки удаления каталога с символической ссылкой внутри (windows only)
// junction нужно удалять явно
УдалитьФайлы(ОбъединитьПути(ПолноеИмя, "current"));

УдалитьФайлы(ПолноеИмя);
КонецЕсли;
КонецПроцедуры

9 changes: 6 additions & 3 deletions packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@
.ВерсияСреды("1.0.20")
.ЗависитОт("json")
.ЗависитОт("1commands", "1.3.2")
.ЗависитОт("fluent", "0.3.1")
.ЗависитОт("fluent", "0.6.1")
.ЗависитОт("fs")
.ЗависитОт("logos")
.ЗависитОт("tempfiles")
.ЗависитОт("cli", "0.9.8")
.ЗависитОт("strings")
.ЗависитОт("decorator", "1.5.2")
.ЗависитОт("autumn", "3.2.0")
.ЗависитОт("autumn-logos", "1.1.1")
.ЗависитОт("autumn-cli", "1.0.3")
.ИсполняемыйФайл("src/cmd/ovm.os", "ovm")
;
140 changes: 63 additions & 77 deletions src/cmd/ovm.os
Original file line number Diff line number Diff line change
@@ -1,81 +1,67 @@
#Использовать cli
#Использовать tempfiles
#Использовать autumn
#Использовать autumn-logos
#Использовать autumn-cli

#Использовать "."
#Использовать "../core"

///////////////////////////////////////////////////////////////////////////////

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

КомандаПриложения.ВывестиСправку();

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

Процедура ВыполнитьПриложение()

КонсольноеПриложение = Новый КонсольноеПриложение(
ПараметрыПриложения.ИмяПриложения(),
"OneScript Version Manager v" + ПараметрыПриложения.Версия()
);

КонсольноеПриложение.Версия("v version", ПараметрыПриложения.Версия());

КонсольноеПриложение.ДобавитьКоманду(
"install i",
"Установить OneScript указанных версий",
Новый КомандаInstall()
);
КонсольноеПриложение.ДобавитьКоманду(
"use u",
"Использовать OneScript указанной версии",
Новый КомандаUse()
);
КонсольноеПриложение.ДобавитьКоманду(
"uninstall delete d",
"Удалить OneScript указанных версий",
Новый КомандаUninstall()
);
КонсольноеПриложение.ДобавитьКоманду(
"list ls",
"Вывести список установленных и/или доступных версий OneScript",
Новый КомандаList()
);
КонсольноеПриложение.ДобавитьКоманду(
"run r",
"Запустить исполняемый файл в окружении указанной версии OneScript",
Новый КомандаRun()
);
КонсольноеПриложение.ДобавитьКоманду(
"which w",
"Вывести путь к установленной версии OneScript",
Новый КомандаWhich()
);
КонсольноеПриложение.ДобавитьКоманду(
"config",
"Настройки ovm. Прокси, сервера и т.п.",
Новый КомандаConfig()
);

КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект);
КонсольноеПриложение.Запустить(АргументыКоманднойСтроки);

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

Лог = ПараметрыOVM.ПолучитьЛог();
КодСостояния = 0;
Попытка
ВыполнитьПриложение();
Исключение
Лог.Ошибка(ОписаниеОшибки());
КодСостояния = 1;
КонецПопытки;

ВременныеФайлы.Удалить();

ЗавершитьРаботу(КодСостояния);
Функция НастройкиЛогоса()

НастройкиЛога = Новый Соответствие;
НастройкиЛога.Вставить("level", "INFO");
НастройкиЛога.Вставить("appenders", "logos");
НастройкиЛога.Вставить("classlayout", "РаскладкаЛогOVM");

НастройкиУровнейЛогов = Новый Соответствие;
НастройкиУровнейЛогов.Вставить("oscript.app.ovm", НастройкиЛога);

НастройкаАппендера = Новый Соответствие;
НастройкаАппендера.Вставить("type", "АппендерЛогOVM");
НастройкаАппендера.Вставить("level", "INFO");

НастройкиАппендеров = Новый Соответствие;

НастройкиАппендеров.Вставить("logos", НастройкаАппендера);

Результат = Новый Соответствие;

Результат.Вставить("logos.logger", НастройкиУровнейЛогов);
Результат.Вставить("logos.appender", НастройкиАппендеров);

Возврат Результат;

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

СоветДругогоМастера = Новый СоветДругогоМастера;
СоветДругогоМастера.ЗначенияДеталек(НастройкиЛогоса());

Поделка = Новый Поделка(СоветДругогоМастера);

УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0;

Если УпакованВИсполняемыйФайл Тогда
Поделка
.ДобавитьЗаготовку(Тип("ИнициализацияИнтефейсаКоманднойСтроки"))
.ДобавитьЗаготовку(Тип("ИнициализацияФабрикиЛогов"));
КонецЕсли;

Поделка
.ДобавитьАннотацию(Тип("АннотацияЛогOVM"))
.ДобавитьЖелудь(Тип("ФайлНастроек"))
.ДобавитьЖелудь(Тип("УстановщикOneScript"))
.ДобавитьЖелудь(Тип("РаскладкаЛогOVM"))
.ДобавитьЖелудь(Тип("ПараметрыOVM"))
.ДобавитьЖелудь(Тип("ПараметрыПриложения"))
.ДобавитьЖелудь(Тип("ДеинсталляторOneScript"))
.ДобавитьЖелудь(Тип("ВерсииOneScript"))
.ДобавитьЖелудь(Тип("АппендерЛогOVM"))
.ДобавитьЖелудь(Тип("АктиваторOneScript"))
.ДобавитьЖелудь(Тип("КомандаConfig"))
.ДобавитьЖелудь(Тип("КомандаInstall"))
.ДобавитьЖелудь(Тип("КомандаList"))
.ДобавитьЖелудь(Тип("КомандаRun"))
.ДобавитьЖелудь(Тип("КомандаUninstall"))
.ДобавитьЖелудь(Тип("КомандаUse"))
.ДобавитьЖелудь(Тип("КомандаWhich"));

Поделка.ЗапуститьПриложение();
42 changes: 16 additions & 26 deletions src/cmd/Классы/КомандаConfig.os
Original file line number Diff line number Diff line change
@@ -1,32 +1,22 @@
#Использовать "../../core"

Процедура ОписаниеКоманды(КомандаПриложения) Экспорт

КомандаПриложения.Аргумент(
"NAME",
,
"Название опции")
.ТСтрока();
&Аргумент(Имя = "NAME", Описание = "Название опции")
&ТСтрока
Перем Имя;

КомандаПриложения.Аргумент(
"VALUE",
,
"Значение опции (массив строк)")
.ТСтрока();

КонецПроцедуры
&Аргумент(Имя = "VALUE", Описание = "Значение опции (массив строк)")
&ТСтрока
Перем Значение;

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
Имя = КомандаПриложения.ЗначениеАргумента("NAME");
Значение = КомандаПриложения.ЗначениеАргумента("VALUE");
&Пластилин
Перем ФайлНастроек;

Хранилище = ПараметрыOVM.ХранилищеНастроек();
Хранилище.Установить(Имя, Значение);
Хранилище.Записать();
&КомандаПриложения(Имя = "config", Описание = "Настройки ovm. Прокси, сервера и т.п.")
Процедура ПриСозданииОбъекта()
КонецПроцедуры

КонецПроцедуры
&ВыполнениеКоманды
Процедура ВыполнениеКоманды() Экспорт
ФайлНастроек.Установить(Имя, Значение);
ФайлНастроек.Записать();
КонецПроцедуры
38 changes: 28 additions & 10 deletions src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
#Использовать "../../core"

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

&Пластилин
Перем УстановщикOneScript;

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

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

// Заполняет описание команды для библиотеки cli
//
// Параметры:
Expand All @@ -15,7 +26,12 @@

КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)")
.ВОкружении("OVM_INSTALL_CLEAN");


Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript")
.ВОкружении("OVM_INSTALL_X86");
КонецЕсли;

КомандаПриложения.Аргумент(
"VERSION",
,
Expand All @@ -33,21 +49,25 @@
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт

МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION");
АлиасВерсии = КомандаПриложения.ЗначениеОпции("name");
ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");

Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда
ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript";
КонецЕсли;

УстановщикOneScript = Новый УстановщикOneScript();


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

Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки);
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64);
КонецЦикла;

Если МассивВерсийКУстановке.Количество() > 0 Тогда
Лог.Информация(
"Для начала использования версии OneScript, выполните команду:
Expand All @@ -57,5 +77,3 @@
КонецЕсли;

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

Лог = ПараметрыOVM.ПолучитьЛог();
Loading

0 comments on commit 186e1bd

Please sign in to comment.