Skip to content

dev to master #16

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

Merged
merged 33 commits into from
Oct 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
7933565
Merge branch 'release/v1.0.0-RC15' into develop
nixel2007 Feb 10, 2020
94ba815
feat: Определение ТекущейВерсии из Симлинка
240596448 Oct 30, 2020
38233f2
Добавлена установка x64 дистрибутивов
240596448 Nov 19, 2020
f09bf52
Проброс опции `х86` для команды `Install`
240596448 Nov 20, 2020
74efdec
Исправлены имена переменных
240596448 Nov 20, 2020
e2a29f4
Установка "при необходимости" версии, соотвестветствующей битности ОС
240596448 Nov 21, 2020
1aedfad
Добавлена зависимость от strings
240596448 Nov 21, 2020
d74519b
Добавлен тест удаления версии
240596448 Nov 22, 2020
a17fb80
Добавлен тест установки x64 версии
240596448 Nov 22, 2020
9aaf758
Исправлена ошибка передачи параметра
240596448 Sep 19, 2021
efb9453
Отладка скриптов, запускаемых через OVM, в VSCode
artbear Nov 14, 2021
475bf41
вернул случайно удаленный текст
artbear Nov 14, 2021
ac62484
Merge pull request #12 from oscript-library/artbear-patch-1
nixel2007 Nov 14, 2021
9ad8cf7
Исправлен якорь на активацию в cmd
nixel2007 Apr 19, 2022
cd34333
Merge pull request #10 from 240596448/feature/x64
nixel2007 Aug 15, 2022
fbed2c5
Merge pull request #8 from 240596448/feature/get-current-version
nixel2007 Aug 15, 2022
c131684
Поддержка версии 2.0
nixel2007 Dec 26, 2022
5a3dde1
Активация на macos
nixel2007 Dec 26, 2022
6581337
Merge branch 'feature/oscript-2' into develop
nixel2007 Dec 26, 2022
8c9bf68
fix: ошибка проверки точной версии на 1.3.0 и линукс через mono
otymko Dec 27, 2022
82e3818
убрал моно из условия
otymko Dec 27, 2022
9bd2f27
Исправил на УстановитьКоманду
otymko Dec 27, 2022
29c2809
Merge pull request #17 from oscript-library/fix/fix-run-mono
nixel2007 Feb 3, 2023
407d745
Перевод проекта на рельсы осени
sfaqer Aug 20, 2023
75aefa6
Корректная версия зависимости autumn-cli
sfaqer Aug 20, 2023
18e123b
Работоспособность при упаковке в exe
sfaqer Aug 23, 2023
de9ab4b
Update src/core/Классы/ФайлНастроек.os
sfaqer Aug 23, 2023
2a92341
Поднял зависимость от fluent
sfaqer Aug 23, 2023
415b5d8
Fix: ошибка создания симлинка с пробелов в пути
240596448 Sep 17, 2023
9a73cef
Merge pull request #21 from 240596448/develop
nixel2007 Sep 18, 2023
248b255
1. Настройки логоса вынесены из файла настроек и задаются при старте …
sfaqer Oct 1, 2023
0eaef6d
Update packagedef
sfaqer Oct 1, 2023
522353c
Merge pull request #20 from sfaqer/feature/autumn-ovm
nixel2007 Oct 1, 2023
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
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"
Copy link
Member

Choose a reason for hiding this comment

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

Вредный совет, разве нет?

},
"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