Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
60 changes: 59 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ovm - утилита, предназначенная для установки,
## Пререквизиты

* Установленный `.Net Framework >=4.5.2` либо `Mono >=4.6`
* Работающий интернет
* Работающий интернет (доступ к [oscript.io](https://oscript.io), а для установки сборок веток и пул-реквестов - к [build.oscript.io](https://build.oscript.io))

## Установка

Expand Down Expand Up @@ -103,6 +103,44 @@ ovm install dev stable 1.0.19 # Установить стабильную, но
ovm use --install dev # Активировать ночную сборку и установить, если ее нет
```

### Установка сборок с сервера сборок

Помимо релизов с сайта OneScript, ovm умеет ставить сборки веток и пул-реквестов с сервера сборок [build.oscript.io](https://build.oscript.io/job/1Script/). Это удобно, чтобы проверить свою библиотеку с еще не вышедшими изменениями движка.

Версия задается с префиксом `branch:` (ветка) либо `pr:` (пул-реквест):

```sh
ovm install branch:develop # Последняя успешная сборка ветки develop
ovm install branch:feature/my-branch # Ветка с косой чертой в имени
ovm install pr:1731 # Последняя успешная сборка пул-реквеста 1731

ovm use --install pr:1731 # Установить (если ее нет) и активировать сборку пул-реквеста
```

По умолчанию берется последняя успешная сборка. Конкретную сборку можно указать через решетку:

```sh
ovm install branch:develop#777 # Сборка №777 ветки develop
```

Каталогом установки (алиасом) по умолчанию становится имя ветки или пул-реквеста, косая черта заменяется на дефис, номер сборки дописывается через дефис:

|Версия|Алиас|
|-|-
|`branch:develop`|`develop`
|`branch:feature/my-branch`|`feature-my-branch`
|`pr:1731`|`PR-1731`
|`branch:develop#777`|`develop-777`

Как и для обычных версий, алиас можно задать явно опцией `--name`:

```sh
ovm install --name test_pr pr:1731
ovm use test_pr
```

Список веток и пул-реквестов, доступных к установке, выводится командой `ovm ls --builds` (см. [Вывод установленных версий OneScript](#вывод-установленных-версий-onescript)).

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

Для запуска `oscript` и прочих утилит без указания путей к ним необходимо произвести активацию версии OneScript. При этом в каталоге данных `ovm` создастся специальная символическая ссылка `current`, ведущая на активированную версию.
Expand Down Expand Up @@ -135,6 +173,14 @@ $ ovm ls --remote # Вывод версий, доступных к устано
1.0.18 (http://oscript.io/downloads/archive/1_0_18)
```

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

pr:1731 (https://build.oscript.io/job/1Script/job/PR-1731/)
branch:develop (https://build.oscript.io/job/1Script/job/develop/)
branch:feature/async (https://build.oscript.io/job/1Script/job/feature%252Fasync/)
```

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

Expand Down Expand Up @@ -202,6 +248,18 @@ $ ovm config <имя параметра> <значение>
$ ovm config oscript.server https://internal.oscript.io
```

### Настройка сервера сборок

```sh
$ ovm config build.server https://internal.build.oscript.io
$ ovm config build.job 1Script
```

|Параметр|Значение по умолчанию|Пояснение
|-|-|-
|build.server|https://build.oscript.io|Адрес сервера сборок (Jenkins), с которого ставятся версии `branch:` и `pr:`
|build.job|1Script|Имя многоветочного задания сборки OneScript на сервере сборок

### Настройка прокси-сервера

При работе за корпоративным прокси-сервером может потребоваться указание настроек прокси.
Expand Down
20 changes: 20 additions & 0 deletions features/list-builds.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#language: ru

Функциональность: Просмотр сборок с сервера сборок

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

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

Сценарий: Вывод списка доступных сборок
Когда Я выполняю команду "oscript ./src/cmd/ovm.os ls --builds"
Тогда я вижу в консоли строку подобно "^branch:develop\s\(http.*\)"
И я вижу в консоли строку подобно "^pr:\d+\s\(http.*\)"

Сценарий: Вывод списка доступных сборок в тихом режиме
Когда Я выполняю команду "oscript ./src/cmd/ovm.os ls --builds --quiet"
# \s* перед $ - это перевод каретки в конце строки на Windows
Тогда я вижу в консоли строку подобно "^branch:develop\s*$"
25 changes: 22 additions & 3 deletions lib.config
Original file line number Diff line number Diff line change
@@ -1,7 +1,26 @@
<package-def>
<class name="АктиваторOneScript" file="src/core/Классы/АктиваторOneScript.os"/>
<module name="ВерсииOneScript" file="src/core/Модули/ВерсииOneScript.os"/>
<class name="АннотацияЛогOVM" file="src/core/Классы/АннотацияЛогOVM.os"/>
<class name="АппендерЛогOVM" file="src/core/Классы/АппендерЛогOVM.os"/>
<class name="ВерсииOneScript" file="src/core/Классы/ВерсииOneScript.os"/>
<class name="ДеинсталляторOneScript" file="src/core/Классы/ДеинсталляторOneScript.os"/>
<class name="ДетекторОкружения" file="src/core/Классы/ДетекторОкружения.os"/>
<class name="ДубСПроцессором" file="src/core/Классы/ДубСПроцессором.os"/>
<class name="ОпределительДистрибутива" file="src/core/Классы/ОпределительДистрибутива.os"/>
<class name="ПараметрыOVM" file="src/core/Классы/ПараметрыOVM.os"/>
<class name="ПараметрыПриложения" file="src/core/Классы/ПараметрыПриложения.os"/>
<class name="ПровайдерДистрибутивовВерсии" file="src/core/Классы/ПровайдерДистрибутивовВерсии.os"/>
<class name="ПровайдерДистрибутивовСборки" file="src/core/Классы/ПровайдерДистрибутивовСборки.os"/>
<class name="РаскладкаЛогOVM" file="src/core/Классы/РаскладкаЛогOVM.os"/>
<class name="УстановщикOneScript" file="src/core/Классы/УстановщикOneScript.os"/>
<module name="ПараметрыOVM" file="src/core/Модули/ПараметрыOVM.os"/>
</package-def>
<class name="ФабрикаИнтернетСоединения" file="src/core/Классы/ФабрикаИнтернетСоединения.os"/>
<class name="ФайлНастроек" file="src/core/Классы/ФайлНастроек.os"/>

<class name="КомандаConfig" file="src/cmd/Классы/КомандаConfig.os"/>
<class name="КомандаInstall" file="src/cmd/Классы/КомандаInstall.os"/>
<class name="КомандаList" file="src/cmd/Классы/КомандаList.os"/>
<class name="КомандаRun" file="src/cmd/Классы/КомандаRun.os"/>
<class name="КомандаUninstall" file="src/cmd/Классы/КомандаUninstall.os"/>
<class name="КомандаUse" file="src/cmd/Классы/КомандаUse.os"/>
<class name="КомандаWhich" file="src/cmd/Классы/КомандаWhich.os"/>
</package-def>
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Описание.Имя("ovm")
.Версия("1.6.2")
.Версия("1.7.0")
.Автор("Nikita Fedkin")
.АдресАвтора("nixel2007@gmail.com")
.Описание("OneScript Version Manager")
Expand Down
22 changes: 17 additions & 5 deletions src/cmd/Классы/КомандаInstall.os
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
&Пластилин
Перем УстановщикOneScript;

&Пластилин
Перем ВерсииOneScript; // Работа с версиями OneScript

&Пластилин("ДетекторОкружения")
Перем Окружение;

Expand Down Expand Up @@ -38,10 +41,13 @@
КомандаПриложения.Аргумент(
"VERSION",
,
"Устанавливаемая версия (версии) OneScript. " +
"Допустимо использовать трехномерные версии (1.0.17, 1.0.18), " +
"lts, stable, dev, preview, lts-dev " +
"Может быть передано несколько значений")
"Устанавливаемая версия (версии) OneScript. "
+ "Допустимо использовать трехномерные версии (1.0.17, 1.0.18), "

Check notice on line 45 in src/cmd/Классы/КомандаInstall.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

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

Возможная опечатка в "трехномерные"
+ "lts, stable, dev, preview, lts-dev, "
+ "а также сборки веток и пул-реквестов с сервера сборок "

Check notice on line 47 in src/cmd/Классы/КомандаInstall.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

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

Возможная опечатка в "реквестов"
+ "(branch:develop, branch:feature/my-branch, pr:1731). "
+ "Конкретную сборку можно указать через решетку: branch:develop#777. "
+ "Может быть передано несколько значений")
.ТМассивСтрок()
.ВОкружении("OVM_INSTALL_VERSION");

Expand Down Expand Up @@ -78,10 +84,16 @@
КонецЦикла;

Если МассивВерсийКУстановке.Количество() > 0 Тогда

Если НЕ ЗначениеЗаполнено(АлиасВерсии) Тогда
АлиасВерсии = ВерсииOneScript.АлиасПоУмолчанию(

Check notice on line 89 in src/cmd/Классы/КомандаInstall.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

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

Возможная опечатка в "Алиас"
МассивВерсийКУстановке[МассивВерсийКУстановке.ВГраница()]);
КонецЕсли;

Лог.Информация(
"Для начала использования версии OneScript, выполните команду:
|ovm use %1",
?(ЗначениеЗаполнено(АлиасВерсии), АлиасВерсии, МассивВерсийКУстановке[МассивВерсийКУстановке.ВГраница()])
АлиасВерсии
);
КонецЕсли;

Expand Down
28 changes: 26 additions & 2 deletions src/cmd/Классы/КомандаList.os
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@
&ПоУмолчанию(Ложь)
Перем ВыводитьСписокВерсийНаСайте;

&Опция(
Имя = "builds b",
Описание = "Вывести список сборок веток и пул-реквестов, доступных к установке с сервера сборок")

Check notice on line 20 in src/cmd/Классы/КомандаList.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

src/cmd/Классы/КомандаList.os#L20

Возможная опечатка в "реквестов"
&ВОкружении("OVM_LIST_BUILDS")
&ТБулево
&ПоУмолчанию(Ложь)
Перем ВыводитьСписокСборок; // Признак вывода списка сборок с сервера сборок

&Опция(Имя = "all a", Описание = "Вывести список всех версий: установленных и доступных на сайте")
&ВОкружении("OVM_LIST_ALL")
&ТБулево
Expand All @@ -34,7 +42,9 @@
&ВыполнениеКоманды
Процедура ВыполнениеКоманды() Экспорт

Если ВыводитьВсеВерсии Тогда
Если ВыводитьСписокСборок Тогда
ВывестиСписокДоступныхКУстановкеСборок();
ИначеЕсли ВыводитьВсеВерсии Тогда
ВывестиВсеВерсии();
ИначеЕсли ВыводитьСписокВерсийНаСайте Тогда
ВывестиСписокДоступныхКУстановкеВерсий();
Expand Down Expand Up @@ -110,8 +120,22 @@
КонецЦикла;
КонецПроцедуры

Процедура ВывестиСписокДоступныхКУстановкеСборок()

СписокДоступныхСборок = ВерсииOneScript.ПолучитьСписокДоступныхКУстановкеСборок();
Для Каждого ДоступнаяСборка Из СписокДоступныхСборок Цикл
Если ТихийРежим Тогда
Сообщение = ДоступнаяСборка.Алиас;
Иначе
Сообщение = СтрШаблон("%1 (%2)", ДоступнаяСборка.Алиас, ДоступнаяСборка.Путь);
КонецЕсли;
Лог.Информация(Сообщение);
КонецЦикла;

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

Процедура ВывестиСписокДоступныхКУстановкеВерсий()

СписокДоступныВерсий = ВерсииOneScript.ПолучитьСписокДоступныхКУстановкеВерсий();
Для Каждого ДоступнаяВерсия Из СписокДоступныВерсий Цикл
Если ТихийРежим Тогда
Expand Down
6 changes: 5 additions & 1 deletion src/cmd/Классы/КомандаUse.os
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
&Пластилин
Перем АктиваторOneScript;

&Аргумент(Имя = "VERSION", Описание = "Используемая версия OneScript. Допустимо использовать трехномерные версии (1.0.17, 1.0.18), stable, dev")
&Аргумент(
Имя = "VERSION",
Описание = "Используемая версия OneScript. Допустимо использовать трехномерные версии
|(1.0.17, 1.0.18), stable, dev, а совместно с опцией --install - и сборки с сервера
|сборок (branch:develop, branch:develop#777, pr:1731, pr:1731#3)")
&ВОкружении("OVM_USE_VERSION")
&ТСтрока
Перем ИспользуемаяВерсия;
Expand Down
23 changes: 16 additions & 7 deletions src/core/Классы/АктиваторOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,17 @@
// алиас не установлен
//
Процедура ИспользоватьВерсиюOneScript(Знач ИспользуемаяВерсия, Знач ВыполнятьУстановкуПриНеобходимости = Ложь) Экспорт


ВерсияКУстановке = ИспользуемаяВерсия;
ИспользуемаяВерсия = ВерсииOneScript.АлиасПоУмолчанию(ИспользуемаяВерсия);

Лог.Информация("Активация версии OneScript %1", ИспользуемаяВерсия);

ПроверитьНаличиеИспользуемойВерсии(ИспользуемаяВерсия, ВыполнятьУстановкуПриНеобходимости);

ПроверитьНаличиеИспользуемойВерсии(
ИспользуемаяВерсия,
ВерсияКУстановке,
ВыполнятьУстановкуПриНеобходимости);

КаталогУстановки = ПараметрыOVM.КаталогУстановкиПоУмолчанию();
КаталогУстановкиВерсии = ОбъединитьПути(КаталогУстановки, ИспользуемаяВерсия);

Expand Down Expand Up @@ -253,17 +259,20 @@

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

Процедура ПроверитьНаличиеИспользуемойВерсии(Знач ИспользуемаяВерсия, Знач ВыполнятьУстановкуПриНеобходимости)

Процедура ПроверитьНаличиеИспользуемойВерсии(
Знач ИспользуемаяВерсия,
Знач ВерсияКУстановке,
Знач ВыполнятьУстановкуПриНеобходимости)

Если ВерсииOneScript.ВерсияУстановлена(ИспользуемаяВерсия) Тогда
Возврат;
КонецЕсли;

Если ВыполнятьУстановкуПриНеобходимости Тогда
ДополнительныеПараметры = УстановщикOneScript.ДополнительныеПараметрыУстановки();
ДополнительныеПараметры.ИспользоватьХ64 = Окружение.ЭтоX64();

УстановщикOneScript.УстановитьOneScript(ИспользуемаяВерсия, , ДополнительныеПараметры);
УстановщикOneScript.УстановитьOneScript(ВерсияКУстановке, , ДополнительныеПараметры);
Иначе
ВызватьИсключение СтрШаблон("Не обнаружена требуемая версия <%1>", ИспользуемаяВерсия);
КонецЕсли;
Expand Down
Loading
Loading