Skip to content
This repository was archived by the owner on May 25, 2021. It is now read-only.

Commit 92ffa5a

Browse files
committed
Merge branch 'develop'
2 parents 65b5e15 + 4c5b60f commit 92ffa5a

19 files changed

Lines changed: 412 additions & 24 deletions

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,13 @@ oscript_modules/
33

44
src/cmd/oscript\.cfg
55
ovm*.exe
6+
7+
temp/
8+
exec.log
9+
*.dll
10+
11+
coverage/
12+
13+
junit-bdd\.xml
14+
15+
\.sonar/

.travis.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ before_install:
1818
- oscript
1919

2020
install:
21-
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install -l
21+
- sudo opm install -l
22+
- sudo opm install -l 1bdd
23+
- oscript -make src/cmd/ovm.os ovm.exe
24+
- echo "mono ./ovm.exe ""$@""" > ovm
25+
- chmod +x ./ovm
26+
- cp /usr/share/oscript/bin/ScriptEngine.HostedScript.dll ScriptEngine.HostedScript.dll
2227

2328
cache:
2429
directories:

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
{
2-
"language-1c-bsl.linterEntryPoint": "src/ovm.os"
2+
"language-1c-bsl.linterEntryPoint": "src/cmd/ovm.os",
3+
"gherkin-autocomplete.featureLibraries": [
4+
"./oscript_modules/1bdd/features/lib"
5+
]
36
}

README.md

Lines changed: 167 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,184 @@
33
[![Quality Gate](https://sonar.silverbulleters.org/api/badges/gate?key=sonar-opensource-add-ovm)](https://sonar.silverbulleters.org/dashboard?id=sonar-opensource-add-ovm)
44
[![Tech Debt](https://sonar.silverbulleters.org/api/badges/measure?key=sonar-opensource-add-ovm&metric=sqale_debt_ratio)](https://sonar.silverbulleters.org/dashboard?id=sonar-opensource-add-ovm)
55

6+
## Цель
7+
8+
ovm - утилита, предназначенная для установки, обновления и переключения между различными версиями OneScript. Вдохновение черпается из nvm (node.js version manager)
9+
10+
## Пререквизиты
11+
12+
* Установленный `.Net Framework >=4.5.2` либо `Mono >=4.6`
13+
* Работающий интернет
14+
15+
## Установка
16+
17+
### Windows
18+
19+
* Скачать `ovm.exe` со страницы [страницы релизов GitHub](https://github.com/silverbulleters/ovm/releases)
20+
* По желанию прописать путь к ovm.exe в переменной окружения `PATH`
21+
22+
Если на машине установлен OneScript из msi и/или путь к установленному OneScript прописан в `PATH`, то перед началом использования `ovm` необходимо один раз в консоли с административными правами выполнить команду `ovm migrate`, после чего **перезапустить консоль**.
23+
24+
### Linux
25+
26+
* Скачать `ovm.exe` и `ScriptEngine.HostedScript.dll` со страницы [страницы релизов GitHub](https://github.com/silverbulleters/ovm/releases)
27+
* Файлы должны располагаться в одной папке
28+
* Для быстрого использования приложения можно создать sh-файл со следующим содержанием:
29+
30+
```sh
31+
mono path/to/ovm.exe "$@"
32+
```
33+
34+
и добавить его в `$PATH` (например, в `~/.local/share/bin`)
35+
36+
## Поддержка различных терминалов
37+
38+
Для каждого из терминалов активация ovm выглядит по-разному. После выполнения первичной активации в большинстве случаев необходимо переоткрыть текущий терминал (это надо сделать один раз). Для перечисленных ниже терминалов действия по активации происходят **автоматически**.
39+
40+
### cmd (Windows)
41+
42+
При выполнении команды `ovm migrate`:
43+
создается запись в реестре по адресу `HKCU\Software\Microsoft\Command Processor\Autorun` следующего содержания:
44+
45+
```cmd
46+
set PATH=%OVM_OSCRIPTBIN%;%PATH%
47+
```
48+
49+
### powershell (Windows)
50+
51+
При выполнении команды `ovm migrate`:
52+
создается файл (либо добавляется в существующий) по адресу `%USERPROFILE%\Documents\WindowsPowerShell\profile.ps1` со следующим содержанием:
53+
54+
```powershell
55+
set PATH=$OVM_OSCRIPTBIN;$PATH
56+
```
57+
58+
### sh (*nix)
59+
60+
При первичной активации версии OneScript:
61+
создается файл (либо добавляется в существующий) по адресу `$HOME/.profile` со следующим содержанием:
62+
63+
```sh
64+
export $HOME/.local/share/ovm/current/bin:$PATH
65+
```
66+
67+
### bash (*nix)
68+
69+
При первичной активации версии OneScript:
70+
создается файл (либо добавляется в существующий) по адресу `$HOME/.bashrc` со следующим содержанием:
71+
72+
```bash
73+
export $HOME/.local/share/ovm/current/bin:$PATH
74+
```
75+
76+
### Другие терминалы
77+
78+
Автоматическая активация ovm в других терминалах не гарантируется. Чаще всего она будет делаться по аналогии (в конфигурационных файлах), либо в настройках самого терминала.
79+
80+
Для `ConEmu` активация производится через `Settings` -> `Startup` -> `Environment`. В метод установки PATH необходимо добавить путь к %OVM_OSCRIPTBIN% перед текущим `%PATH%`. Например, `set PATH=%OVM_OSCRIPTBIN%;%PATH%`
81+
82+
## Использование
83+
84+
ovm - утилита командной строки, основанная на библиотеке [cli](https://github.com/khorevaa/cli). Утилита содержит несколько команд с различными аргументами и опциями. Каждая команда имеет длинное имя и короткий алиас. Каждый аргумент или опция могут быть установлены из переменных окружения либо указаны непосредственно в командной строке. Более подробно - в справке по библиотеке [cli](https://github.com/khorevaa/cli).
85+
86+
### Установка OneScript
87+
88+
Установка OneScript производится в пользовательский каталог, не захламляя общее системное пространство.
89+
90+
```sh
91+
ovm install dev # Установить последнюю ночную сборку
92+
ovm install dev stable 1.0.19 # Установить стабильную, ночную сборки и версию 1.0.19
93+
94+
ovm use --install dev # Активировать ночную сборку и установить, если ее нет
95+
```
96+
97+
### Активация OneScript
98+
99+
Для запуска `oscript` и прочих утилит без указания путей к ним необходимо произвести активацию версии OneScript. При этом в каталоге данных `ovm` создастся специальная символическая ссылка `current`, ведущая на активированную версию.
100+
101+
```sh
102+
ovm use dev # Активировать ранее установленную версию dev (ночную сборку)
103+
ovm use --install dev # установить (если ее нет) и активировать версию dev
104+
```
105+
106+
### Удаление OneScript
107+
108+
```sh
109+
ovm delete 1.0.19 # Удалить установленную версию 1.0.19
110+
```
111+
112+
### Вывод установленных версий OneScript
113+
114+
```sh
115+
$ ovm ls # Вывод установленных версий
116+
117+
1.0.19 -> 1.0.19.105 (C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19)
118+
current -> 1.0.20.160 (C:\Users\NikitaGryzlov\AppData\Local\ovm\current)
119+
dev -> 1.0.20.160 (C:\Users\NikitaGryzlov\AppData\Local\ovm\dev)
120+
```
121+
122+
```sh
123+
$ ovm ls --remote # Вывод версий, доступных к установке с сайта
124+
125+
1.0.19 (http://oscript.io/downloads/archive/1_0_19)
126+
1.0.18 (http://oscript.io/downloads/archive/1_0_18)
127+
```
128+
129+
```sh
130+
$ ovm ls --all # Вывод всех версий - установленных и доступных
131+
132+
1.0.18 -> 1.0.18.101 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.18 -> http://oscript.io/downloads/archive/1_0_18
133+
1.0.19 -> 1.0.19.105 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19 -> http://oscript.io/downloads/archive/1_0_19
134+
current -> 1.0.20.160 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\current -> unknown
135+
dev -> 1.0.20.160 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\dev -> http://oscript.io/downloads
136+
stable -> unknown -> not installed -> http://oscript.io/downloads
137+
```
138+
139+
### Запуск приложений в окружении конкретной версии
140+
141+
ovm позволяет запускать приложения в окружении конкретной установленной версии OneScript. При этом происходит доустановка переменной окружения `PATH` к каталогу указанной версии.
142+
143+
```sh
144+
$ ovm run 1.0.19 oscript -version # Выполнение команды oscript -version в окружении 1.0.19
145+
146+
1.0.19.105
147+
```
148+
149+
```sh
150+
$ ovm run 1.0.19 where oscript # Вывод сторонней команды where в окружении 1.0.19
151+
152+
C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe # Путь к 1.0.19 указывается раньше, чем путь к current, благодаря запуску ovm run
153+
C:\Users\NikitaGryzlov\AppData\Local\ovm\current\bin\oscript.exe
154+
```
155+
156+
### Получение пути к исполняемому файлу oscript
157+
158+
```sh
159+
$ ovm which 1.0.19
160+
161+
C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
162+
```
163+
164+
## Вывод команды ovm
165+
166+
6167
```
7168
Приложение: ovm
8-
OneScript Version Manager
169+
OneScript Version Manager v1.0.0
9170
10171
Строка запуска: ovm [OPTIONS] КОМАНДА [аргументы...]
11172
12173
Опции:
13174
-v, --version показать версию и выйти
14175
15176
Доступные команды:
16-
install, i Установка OneScript указанной версии
177+
install, i Установить OneScript указанных версий
17178
use, u Использовать OneScript указанной версии
18-
uninstall, delete, d Удаление OneScript указанных версий
19-
list, ls Вывести список установленных версий
20-
run, r Запустить исполняемый файл в окружении указанной версии
179+
uninstall, delete, d Удалить OneScript указанных версий
180+
list, ls Вывести список установленных и/или доступных версий OneScript
181+
run, r Запустить исполняемый файл в окружении указанной версии OneScript
21182
which, w Вывести путь к установленной версии OneScript
183+
migrate Поместить установленный системный OneScript под контроль ovm. Только для Windows
22184
23185
Для вывода справки по доступным командам наберите: ovm КОМАНДА --help
24186
```

features/integration.feature

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
#language: ru
2+
3+
Функциональность: Интеграционный сценарий
4+
5+
Как Пользователь ovm
6+
Я хочу быть уверен, что оно в принципе работает
7+
Чтобы начать применять ovm в жизни
8+
9+
Контекст:
10+
Допустим Я устанавливаю переменной среды "OVM_INSTALL_PATH" значение "./temp/ovm"
11+
12+
13+
Сценарий: Вывод справки
14+
Когда Я выполняю команду "ovm"
15+
Тогда я вижу в консоли вывод "OneScript Version Manager"
16+
И я вижу в консоли вывод "Строка запуска: ovm [OPTIONS] КОМАНДА [аргументы...]"
17+
18+
Сценарий: Вывод версии
19+
Когда Я выполняю команду "ovm -v"
20+
Тогда я вижу в консоли строку подобно "\d+\.\d+\.\d+"
21+
22+
Сценарий: Установка версии
23+
Когда Я выполняю команду "ovm install stable"
24+
Тогда я вижу в консоли вывод "Установка OneScript stable..."
25+
И я вижу в консоли вывод "Установка OneScript stable завершена"
26+
И я вижу в консоли вывод "ovm use stable"
27+
28+
Когда Я выполняю команду "ovm ls"
29+
Тогда я вижу в консоли строку подобно "stable -> .*"
30+
31+
Сценарий: Использование версии
32+
Допустим Я выполняю команду "ovm install stable"
33+
Когда Я выполняю команду "ovm use stable"
34+
Тогда я вижу в консоли вывод "OneScript stable активирован"
35+
36+
Сценарий: Проверка использования версии
37+
Когда Я выполняю команду "ovm ls"
38+
И Я Показываю вывод команды
39+
Тогда я вижу в консоли строку подобно "current -> .*"
40+
И Я выполняю команду "which oscript"
41+
И я вижу в консоли строку подобно ".*oscript$"
42+
И Я выполняю команду "which opm"
43+
И я вижу в консоли строку подобно ".*opm$"
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+
3+
Перем БДД; //контекст фреймворка 1bdd
4+
5+
// Метод выдает список шагов, реализованных в данном файле-шагов
6+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
7+
БДД = КонтекстФреймворкаBDD;
8+
9+
ВсеШаги = Новый Массив;
10+
11+
ВсеШаги.Добавить("ЯУстанавливаюПеременнойСредыЗначение");
12+
13+
Возврат ВсеШаги;
14+
КонецФункции
15+
16+
// Реализация шагов
17+
18+
// Процедура выполняется перед запуском каждого сценария
19+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
20+
21+
КонецПроцедуры
22+
23+
// Процедура выполняется после завершения каждого сценария
24+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
25+
26+
КонецПроцедуры
27+
28+
//Я устанавливаю переменной среды "OVM_INSTALL_PATH" значение "./temp/ovm"
29+
Процедура ЯУстанавливаюПеременнойСредыЗначение(Знач ИмяПеременной, Знач ЗначениеПеременной) Экспорт
30+
УстановитьПеременнуюСреды(ИмяПеременной, ЗначениеПеременной);
31+
КонецПроцедуры

0 commit comments

Comments
 (0)