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

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Feb 3, 2018
2 parents 65b5e15 + 4c5b60f commit 92ffa5a
Show file tree
Hide file tree
Showing 19 changed files with 412 additions and 24 deletions.
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,13 @@ oscript_modules/

src/cmd/oscript\.cfg
ovm*.exe

temp/
exec.log
*.dll

coverage/

junit-bdd\.xml

\.sonar/
7 changes: 6 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,12 @@ before_install:
- oscript

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

cache:
directories:
Expand Down
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"language-1c-bsl.linterEntryPoint": "src/ovm.os"
"language-1c-bsl.linterEntryPoint": "src/cmd/ovm.os",
"gherkin-autocomplete.featureLibraries": [
"./oscript_modules/1bdd/features/lib"
]
}
172 changes: 167 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,184 @@
[![Quality Gate](https://sonar.silverbulleters.org/api/badges/gate?key=sonar-opensource-add-ovm)](https://sonar.silverbulleters.org/dashboard?id=sonar-opensource-add-ovm)
[![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)

## Цель

ovm - утилита, предназначенная для установки, обновления и переключения между различными версиями OneScript. Вдохновение черпается из nvm (node.js version manager)

## Пререквизиты

* Установленный `.Net Framework >=4.5.2` либо `Mono >=4.6`
* Работающий интернет

## Установка

### Windows

* Скачать `ovm.exe` со страницы [страницы релизов GitHub](https://github.com/silverbulleters/ovm/releases)
* По желанию прописать путь к ovm.exe в переменной окружения `PATH`

Если на машине установлен OneScript из msi и/или путь к установленному OneScript прописан в `PATH`, то перед началом использования `ovm` необходимо один раз в консоли с административными правами выполнить команду `ovm migrate`, после чего **перезапустить консоль**.

### Linux

* Скачать `ovm.exe` и `ScriptEngine.HostedScript.dll` со страницы [страницы релизов GitHub](https://github.com/silverbulleters/ovm/releases)
* Файлы должны располагаться в одной папке
* Для быстрого использования приложения можно создать sh-файл со следующим содержанием:

```sh
mono path/to/ovm.exe "$@"
```

и добавить его в `$PATH` (например, в `~/.local/share/bin`)

## Поддержка различных терминалов

Для каждого из терминалов активация ovm выглядит по-разному. После выполнения первичной активации в большинстве случаев необходимо переоткрыть текущий терминал (это надо сделать один раз). Для перечисленных ниже терминалов действия по активации происходят **автоматически**.

### cmd (Windows)

При выполнении команды `ovm migrate`:
создается запись в реестре по адресу `HKCU\Software\Microsoft\Command Processor\Autorun` следующего содержания:

```cmd
set PATH=%OVM_OSCRIPTBIN%;%PATH%
```

### powershell (Windows)

При выполнении команды `ovm migrate`:
создается файл (либо добавляется в существующий) по адресу `%USERPROFILE%\Documents\WindowsPowerShell\profile.ps1` со следующим содержанием:

```powershell
set PATH=$OVM_OSCRIPTBIN;$PATH
```

### sh (*nix)

При первичной активации версии OneScript:
создается файл (либо добавляется в существующий) по адресу `$HOME/.profile` со следующим содержанием:

```sh
export $HOME/.local/share/ovm/current/bin:$PATH
```

### bash (*nix)

При первичной активации версии OneScript:
создается файл (либо добавляется в существующий) по адресу `$HOME/.bashrc` со следующим содержанием:

```bash
export $HOME/.local/share/ovm/current/bin:$PATH
```

### Другие терминалы

Автоматическая активация ovm в других терминалах не гарантируется. Чаще всего она будет делаться по аналогии (в конфигурационных файлах), либо в настройках самого терминала.

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

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

ovm - утилита командной строки, основанная на библиотеке [cli](https://github.com/khorevaa/cli). Утилита содержит несколько команд с различными аргументами и опциями. Каждая команда имеет длинное имя и короткий алиас. Каждый аргумент или опция могут быть установлены из переменных окружения либо указаны непосредственно в командной строке. Более подробно - в справке по библиотеке [cli](https://github.com/khorevaa/cli).

### Установка OneScript

Установка OneScript производится в пользовательский каталог, не захламляя общее системное пространство.

```sh
ovm install dev # Установить последнюю ночную сборку
ovm install dev stable 1.0.19 # Установить стабильную, ночную сборки и версию 1.0.19

ovm use --install dev # Активировать ночную сборку и установить, если ее нет
```

### Активация OneScript

Для запуска `oscript` и прочих утилит без указания путей к ним необходимо произвести активацию версии OneScript. При этом в каталоге данных `ovm` создастся специальная символическая ссылка `current`, ведущая на активированную версию.

```sh
ovm use dev # Активировать ранее установленную версию dev (ночную сборку)
ovm use --install dev # установить (если ее нет) и активировать версию dev
```

### Удаление OneScript

```sh
ovm delete 1.0.19 # Удалить установленную версию 1.0.19
```

### Вывод установленных версий OneScript

```sh
$ ovm ls # Вывод установленных версий

1.0.19 -> 1.0.19.105 (C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19)
current -> 1.0.20.160 (C:\Users\NikitaGryzlov\AppData\Local\ovm\current)
dev -> 1.0.20.160 (C:\Users\NikitaGryzlov\AppData\Local\ovm\dev)
```

```sh
$ ovm ls --remote # Вывод версий, доступных к установке с сайта

1.0.19 (http://oscript.io/downloads/archive/1_0_19)
1.0.18 (http://oscript.io/downloads/archive/1_0_18)
```

```sh
$ ovm ls --all # Вывод всех версий - установленных и доступных

1.0.18 -> 1.0.18.101 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.18 -> http://oscript.io/downloads/archive/1_0_18
1.0.19 -> 1.0.19.105 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19 -> http://oscript.io/downloads/archive/1_0_19
current -> 1.0.20.160 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\current -> unknown
dev -> 1.0.20.160 -> C:\Users\NikitaGryzlov\AppData\Local\ovm\dev -> http://oscript.io/downloads
stable -> unknown -> not installed -> http://oscript.io/downloads
```

### Запуск приложений в окружении конкретной версии

ovm позволяет запускать приложения в окружении конкретной установленной версии OneScript. При этом происходит доустановка переменной окружения `PATH` к каталогу указанной версии.

```sh
$ ovm run 1.0.19 oscript -version # Выполнение команды oscript -version в окружении 1.0.19

1.0.19.105
```

```sh
$ ovm run 1.0.19 where oscript # Вывод сторонней команды where в окружении 1.0.19

C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe # Путь к 1.0.19 указывается раньше, чем путь к current, благодаря запуску ovm run
C:\Users\NikitaGryzlov\AppData\Local\ovm\current\bin\oscript.exe
```

### Получение пути к исполняемому файлу oscript

```sh
$ ovm which 1.0.19

C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
```

## Вывод команды ovm


```
Приложение: ovm
OneScript Version Manager
OneScript Version Manager v1.0.0
Строка запуска: ovm [OPTIONS] КОМАНДА [аргументы...]
Опции:
-v, --version показать версию и выйти
Доступные команды:
install, i Установка OneScript указанной версии
install, i Установить OneScript указанных версий
use, u Использовать OneScript указанной версии
uninstall, delete, d Удаление OneScript указанных версий
list, ls Вывести список установленных версий
run, r Запустить исполняемый файл в окружении указанной версии
uninstall, delete, d Удалить OneScript указанных версий
list, ls Вывести список установленных и/или доступных версий OneScript
run, r Запустить исполняемый файл в окружении указанной версии OneScript
which, w Вывести путь к установленной версии OneScript
migrate Поместить установленный системный OneScript под контроль ovm. Только для Windows
Для вывода справки по доступным командам наберите: ovm КОМАНДА --help
```
43 changes: 43 additions & 0 deletions features/integration.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#language: ru

Функциональность: Интеграционный сценарий

Как Пользователь ovm
Я хочу быть уверен, что оно в принципе работает
Чтобы начать применять ovm в жизни

Контекст:
Допустим Я устанавливаю переменной среды "OVM_INSTALL_PATH" значение "./temp/ovm"


Сценарий: Вывод справки
Когда Я выполняю команду "ovm"
Тогда я вижу в консоли вывод "OneScript Version Manager"
И я вижу в консоли вывод "Строка запуска: ovm [OPTIONS] КОМАНДА [аргументы...]"

Сценарий: Вывод версии
Когда Я выполняю команду "ovm -v"
Тогда я вижу в консоли строку подобно "\d+\.\d+\.\d+"

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

Когда Я выполняю команду "ovm ls"
Тогда я вижу в консоли строку подобно "stable -> .*"

Сценарий: Использование версии
Допустим Я выполняю команду "ovm install stable"
Когда Я выполняю команду "ovm use stable"
Тогда я вижу в консоли вывод "OneScript stable активирован"

Сценарий: Проверка использования версии
Когда Я выполняю команду "ovm ls"
И Я Показываю вывод команды
Тогда я вижу в консоли строку подобно "current -> .*"
И Я выполняю команду "which oscript"
И я вижу в консоли строку подобно ".*oscript$"
И Я выполняю команду "which opm"
И я вижу в консоли строку подобно ".*opm$"
31 changes: 31 additions & 0 deletions features/step_definitions/integration.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd

Перем БДД; //контекст фреймворка 1bdd

// Метод выдает список шагов, реализованных в данном файле-шагов
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
БДД = КонтекстФреймворкаBDD;

ВсеШаги = Новый Массив;

ВсеШаги.Добавить("ЯУстанавливаюПеременнойСредыЗначение");

Возврат ВсеШаги;
КонецФункции

// Реализация шагов

// Процедура выполняется перед запуском каждого сценария
Процедура ПередЗапускомСценария(Знач Узел) Экспорт

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

// Процедура выполняется после завершения каждого сценария
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт

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

//Я устанавливаю переменной среды "OVM_INSTALL_PATH" значение "./temp/ovm"
Процедура ЯУстанавливаюПеременнойСредыЗначение(Знач ИмяПеременной, Знач ЗначениеПеременной) Экспорт
УстановитьПеременнуюСреды(ИмяПеременной, ЗначениеПеременной);
КонецПроцедуры
Loading

0 comments on commit 92ffa5a

Please sign in to comment.