Skip to content

Commit 186e1bd

Browse files
authored
Merge pull request #16 from oscript-library/develop
dev to master
2 parents 9b01219 + 522353c commit 186e1bd

27 files changed

+1033
-848
lines changed

README.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ export $HOME/.local/share/ovm/current/bin:$PATH
8686

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

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

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

@@ -170,6 +170,22 @@ $ ovm which 1.0.19
170170
C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
171171
```
172172

173+
### Отладка скриптов, запускаемых через OVM, в VSCode
174+
175+
После первичной настройки OVM в каталоге вашего проекта нужно штатно настроить отладчик 1скрипт
176+
177+
Далее нужно добавить\изменить файл `.vscode/launch.json`
178+
179+
В разделе `configurations` файла нужно добавить\установить следующие строки
180+
```json
181+
"windows": {
182+
"runtimeExecutable": "${env:OVM_OSCRIPTBIN}\\oscript.exe"
183+
},
184+
"linux": {
185+
"runtimeExecutable": "${env:OVM_OSCRIPTBIN}/oscript"
186+
}
187+
```
188+
173189
## Конфигурирование ovm
174190

175191
ovm имеет несколько конфигурационных параметров, управляющих его поведением. Эти параметры можно задать с помощью команды `config`

features/install-with-alias.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Функциональность: Установка движка с алиасом
44

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

99
Контекст:

features/install-with-clean.feature

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
Функциональность: Установка движка с учетом сохранения библиотек
44

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

99
Контекст:

features/integration.feature

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
Сценарий: Вывод справки
1313
Когда Я выполняю команду "ovm"
1414
Тогда я вижу в консоли вывод "OneScript Version Manager"
15-
И я вижу в консоли вывод "Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]"
15+
И я вижу в консоли вывод "Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]"
1616

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

35+
Сценарий: Удаление версии тождественной текущей
36+
Когда Я выполняю команду "ovm install --name latest stable"
37+
Тогда я вижу в консоли вывод "Установка OneScript stable..."
38+
И я вижу в консоли вывод "Установка OneScript stable завершена"
39+
И я вижу в консоли вывод "ovm use latest"
40+
41+
Когда Я выполняю команду "ovm delete latest"
42+
Тогда Я Показываю вывод команды
43+
И я не вижу в консоли вывод "Версия <latest> не удалена, т.к. является текущей."
44+
И я вижу в консоли вывод "Версия latest удалена"
45+
3546
Сценарий: Проверка использования версии
3647
Когда Я выполняю команду "ovm ls"
3748
И Я Показываю вывод команды
@@ -40,3 +51,12 @@
4051
И я вижу в консоли строку подобно ".*oscript$"
4152
И Я выполняю команду "which opm"
4253
И я вижу в консоли строку подобно ".*opm$"
54+
55+
Сценарий: Проверка установки x64 и опции --x86
56+
Когда Я выполняю команду "ovm install stable"
57+
Тогда я вижу в консоли вывод "Скачиваю установщик версии stable-x64..."
58+
И я вижу в консоли вывод "Установка OneScript stable завершена"
59+
60+
Когда Я выполняю команду "ovm install --x86 stable"
61+
Тогда я вижу в консоли вывод "Скачиваю установщик версии stable..."
62+
И я вижу в консоли вывод "Установка OneScript stable завершена"

features/step_definitions/install-with-alias.os

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,13 @@
2828
//Я удаляю каталог "./temp/ovm"
2929
Процедура ЯУдаляюКаталог(Знач ПутьККаталогу) Экспорт
3030
Если ФС.Существует(ПутьККаталогу) Тогда
31-
УдалитьФайлы(Новый Файл(ПутьККаталогу).ПолноеИмя);
31+
ПолноеИмя = Новый Файл(ПутьККаталогу).ПолноеИмя;
32+
33+
// Обход ошибки удаления каталога с символической ссылкой внутри (windows only)
34+
// junction нужно удалять явно
35+
УдалитьФайлы(ОбъединитьПути(ПолноеИмя, "current"));
36+
37+
УдалитьФайлы(ПолноеИмя);
3238
КонецЕсли;
3339
КонецПроцедуры
3440

packagedef

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
.ВерсияСреды("1.0.20")
77
.ЗависитОт("json")
88
.ЗависитОт("1commands", "1.3.2")
9-
.ЗависитОт("fluent", "0.3.1")
9+
.ЗависитОт("fluent", "0.6.1")
1010
.ЗависитОт("fs")
11-
.ЗависитОт("logos")
1211
.ЗависитОт("tempfiles")
13-
.ЗависитОт("cli", "0.9.8")
12+
.ЗависитОт("strings")
13+
.ЗависитОт("decorator", "1.5.2")
14+
.ЗависитОт("autumn", "3.2.0")
15+
.ЗависитОт("autumn-logos", "1.1.1")
16+
.ЗависитОт("autumn-cli", "1.0.3")
1417
.ИсполняемыйФайл("src/cmd/ovm.os", "ovm")
1518
;

src/cmd/ovm.os

Lines changed: 63 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,67 @@
1-
#Использовать cli
2-
#Использовать tempfiles
1+
#Использовать autumn
2+
#Использовать autumn-logos
3+
#Использовать autumn-cli
34

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

7-
///////////////////////////////////////////////////////////////////////////////
8-
9-
// Обработчик выполнения команды
10-
//
11-
// Параметры:
12-
// КомандаПриложения - КомандаПриложения - Выполняемая команда
13-
//
14-
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
15-
16-
КомандаПриложения.ВывестиСправку();
17-
18-
КонецПроцедуры
19-
20-
Процедура ВыполнитьПриложение()
21-
22-
КонсольноеПриложение = Новый КонсольноеПриложение(
23-
ПараметрыПриложения.ИмяПриложения(),
24-
"OneScript Version Manager v" + ПараметрыПриложения.Версия()
25-
);
26-
27-
КонсольноеПриложение.Версия("v version", ПараметрыПриложения.Версия());
28-
29-
КонсольноеПриложение.ДобавитьКоманду(
30-
"install i",
31-
"Установить OneScript указанных версий",
32-
Новый КомандаInstall()
33-
);
34-
КонсольноеПриложение.ДобавитьКоманду(
35-
"use u",
36-
"Использовать OneScript указанной версии",
37-
Новый КомандаUse()
38-
);
39-
КонсольноеПриложение.ДобавитьКоманду(
40-
"uninstall delete d",
41-
"Удалить OneScript указанных версий",
42-
Новый КомандаUninstall()
43-
);
44-
КонсольноеПриложение.ДобавитьКоманду(
45-
"list ls",
46-
"Вывести список установленных и/или доступных версий OneScript",
47-
Новый КомандаList()
48-
);
49-
КонсольноеПриложение.ДобавитьКоманду(
50-
"run r",
51-
"Запустить исполняемый файл в окружении указанной версии OneScript",
52-
Новый КомандаRun()
53-
);
54-
КонсольноеПриложение.ДобавитьКоманду(
55-
"which w",
56-
"Вывести путь к установленной версии OneScript",
57-
Новый КомандаWhich()
58-
);
59-
КонсольноеПриложение.ДобавитьКоманду(
60-
"config",
61-
"Настройки ovm. Прокси, сервера и т.п.",
62-
Новый КомандаConfig()
63-
);
64-
65-
КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект);
66-
КонсольноеПриложение.Запустить(АргументыКоманднойСтроки);
67-
68-
КонецПроцедуры
69-
70-
Лог = ПараметрыOVM.ПолучитьЛог();
71-
КодСостояния = 0;
72-
Попытка
73-
ВыполнитьПриложение();
74-
Исключение
75-
Лог.Ошибка(ОписаниеОшибки());
76-
КодСостояния = 1;
77-
КонецПопытки;
78-
79-
ВременныеФайлы.Удалить();
80-
81-
ЗавершитьРаботу(КодСостояния);
8+
Функция НастройкиЛогоса()
9+
10+
НастройкиЛога = Новый Соответствие;
11+
НастройкиЛога.Вставить("level", "INFO");
12+
НастройкиЛога.Вставить("appenders", "logos");
13+
НастройкиЛога.Вставить("classlayout", "РаскладкаЛогOVM");
14+
15+
НастройкиУровнейЛогов = Новый Соответствие;
16+
НастройкиУровнейЛогов.Вставить("oscript.app.ovm", НастройкиЛога);
17+
18+
НастройкаАппендера = Новый Соответствие;
19+
НастройкаАппендера.Вставить("type", "АппендерЛогOVM");
20+
НастройкаАппендера.Вставить("level", "INFO");
21+
22+
НастройкиАппендеров = Новый Соответствие;
23+
24+
НастройкиАппендеров.Вставить("logos", НастройкаАппендера);
25+
26+
Результат = Новый Соответствие;
27+
28+
Результат.Вставить("logos.logger", НастройкиУровнейЛогов);
29+
Результат.Вставить("logos.appender", НастройкиАппендеров);
30+
31+
Возврат Результат;
32+
33+
КонецФункции
34+
35+
СоветДругогоМастера = Новый СоветДругогоМастера;
36+
СоветДругогоМастера.ЗначенияДеталек(НастройкиЛогоса());
37+
38+
Поделка = Новый Поделка(СоветДругогоМастера);
39+
40+
УпакованВИсполняемыйФайл = СтрНайти(ТекущийСценарий().Источник, "oscript://") <> 0;
41+
42+
Если УпакованВИсполняемыйФайл Тогда
43+
Поделка
44+
.ДобавитьЗаготовку(Тип("ИнициализацияИнтефейсаКоманднойСтроки"))
45+
.ДобавитьЗаготовку(Тип("ИнициализацияФабрикиЛогов"));
46+
КонецЕсли;
47+
48+
Поделка
49+
.ДобавитьАннотацию(Тип("АннотацияЛогOVM"))
50+
.ДобавитьЖелудь(Тип("ФайлНастроек"))
51+
.ДобавитьЖелудь(Тип("УстановщикOneScript"))
52+
.ДобавитьЖелудь(Тип("РаскладкаЛогOVM"))
53+
.ДобавитьЖелудь(Тип("ПараметрыOVM"))
54+
.ДобавитьЖелудь(Тип("ПараметрыПриложения"))
55+
.ДобавитьЖелудь(Тип("ДеинсталляторOneScript"))
56+
.ДобавитьЖелудь(Тип("ВерсииOneScript"))
57+
.ДобавитьЖелудь(Тип("АппендерЛогOVM"))
58+
.ДобавитьЖелудь(Тип("АктиваторOneScript"))
59+
.ДобавитьЖелудь(Тип("КомандаConfig"))
60+
.ДобавитьЖелудь(Тип("КомандаInstall"))
61+
.ДобавитьЖелудь(Тип("КомандаList"))
62+
.ДобавитьЖелудь(Тип("КомандаRun"))
63+
.ДобавитьЖелудь(Тип("КомандаUninstall"))
64+
.ДобавитьЖелудь(Тип("КомандаUse"))
65+
.ДобавитьЖелудь(Тип("КомандаWhich"));
66+
67+
Поделка.ЗапуститьПриложение();
Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,22 @@
11
#Использовать "../../core"
22

3-
Процедура ОписаниеКоманды(КомандаПриложения) Экспорт
4-
5-
КомандаПриложения.Аргумент(
6-
"NAME",
7-
,
8-
"Название опции")
9-
.ТСтрока();
3+
&Аргумент(Имя = "NAME", Описание = "Название опции")
4+
&ТСтрока
5+
Перем Имя;
106

11-
КомандаПриложения.Аргумент(
12-
"VALUE",
13-
,
14-
"Значение опции (массив строк)")
15-
.ТСтрока();
16-
17-
КонецПроцедуры
7+
&Аргумент(Имя = "VALUE", Описание = "Значение опции (массив строк)")
8+
&ТСтрока
9+
Перем Значение;
1810

19-
// Обработчик выполнения команды
20-
//
21-
// Параметры:
22-
// КомандаПриложения - КомандаПриложения - Выполняемая команда
23-
//
24-
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
25-
Имя = КомандаПриложения.ЗначениеАргумента("NAME");
26-
Значение = КомандаПриложения.ЗначениеАргумента("VALUE");
11+
&Пластилин
12+
Перем ФайлНастроек;
2713

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

32-
КонецПроцедуры
18+
&ВыполнениеКоманды
19+
Процедура ВыполнениеКоманды() Экспорт
20+
ФайлНастроек.Установить(Имя, Значение);
21+
ФайлНастроек.Записать();
22+
КонецПроцедуры

src/cmd/Классы/КомандаInstall.os

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,18 @@
11
#Использовать "../../core"
22

3+
&ЛогOVM
34
Перем Лог;
45

6+
&Пластилин
7+
Перем УстановщикOneScript;
8+
9+
&Пластилин
10+
Перем ПараметрыOVM;
11+
12+
&КомандаПриложения(Имя = "install i", Описание = "Установить OneScript указанных версий")
13+
Процедура ПриСозданииОбъекта()
14+
КонецПроцедуры
15+
516
// Заполняет описание команды для библиотеки cli
617
//
718
// Параметры:
@@ -15,7 +26,12 @@
1526

1627
КомандаПриложения.Опция("clean c", Ложь, "Полностью очищать каталог установки (включая установленные библиотеки)")
1728
.ВОкружении("OVM_INSTALL_CLEAN");
18-
29+
30+
Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
31+
КомандаПриложения.Опция("x86", Ложь, "Устанавливать 32-разрядный дистрибутив OneScript")
32+
.ВОкружении("OVM_INSTALL_X86");
33+
КонецЕсли;
34+
1935
КомандаПриложения.Аргумент(
2036
"VERSION",
2137
,
@@ -33,21 +49,25 @@
3349
// КомандаПриложения - КомандаПриложения - Выполняемая команда
3450
//
3551
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
36-
52+
3753
МассивВерсийКУстановке = КомандаПриложения.ЗначениеАргумента("VERSION");
3854
АлиасВерсии = КомандаПриложения.ЗначениеОпции("name");
3955
ОчищатьКаталогУстановки = КомандаПриложения.ЗначениеОпции("clean");
40-
56+
4157
Если ЗначениеЗаполнено(АлиасВерсии) И МассивВерсийКУстановке.Количество() > 1 Тогда
4258
ВызватьИсключение "Опция <--name> может быть задана только при установке одной версии OneScript";
4359
КонецЕсли;
44-
45-
УстановщикOneScript = Новый УстановщикOneScript();
46-
60+
61+
Если ПараметрыOVM.Это64БитнаяОперационнаяСистема() Тогда
62+
ИспользоватьХ64 = НЕ КомандаПриложения.ЗначениеОпции("x86");
63+
Иначе
64+
ИспользоватьХ64 = Ложь;
65+
КонецЕсли;
66+
4767
Для Каждого ВерсияКУстановке Из МассивВерсийКУстановке Цикл
48-
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки);
68+
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, АлиасВерсии, ОчищатьКаталогУстановки, ИспользоватьХ64);
4969
КонецЦикла;
50-
70+
5171
Если МассивВерсийКУстановке.Количество() > 0 Тогда
5272
Лог.Информация(
5373
"Для начала использования версии OneScript, выполните команду:
@@ -57,5 +77,3 @@
5777
КонецЕсли;
5878

5979
КонецПроцедуры
60-
61-
Лог = ПараметрыOVM.ПолучитьЛог();

0 commit comments

Comments
 (0)