Skip to content

Commit

Permalink
Merge branch 'release/v1.0.0-RC15'
Browse files Browse the repository at this point in the history
  • Loading branch information
nixel2007 committed Feb 10, 2020
2 parents 50f6b58 + fabe292 commit 9b01219
Show file tree
Hide file tree
Showing 10 changed files with 258 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jdk:
- openjdk11

before_install:
- wget -O os.deb http://oscript.io/downloads/1_0_21/deb
- wget -O os.deb http://oscript.io/downloads/night-build/deb?bitness=x64
- sudo dpkg -i os.deb; sudo apt install -f
- oscript

Expand Down
45 changes: 43 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,13 +170,53 @@ $ ovm which 1.0.19
C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
```

## Конфигурирование ovm

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

### Синтаксис команды

```sh
$ ovm config <имя параметра> <значение>
```

### Настройка сайта с релизами

```sh
$ ovm config oscript.server https://internal.oscript.io
```

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

При работе за корпоративным прокси-сервером может потребоваться указание настроек прокси.
Предусмотрены следующие параметры:

|Параметр|Возможное значение|Пояснение
|-|-|-
proxy.use|true/false|Включение использования прокси. Если параметр не задан - прокси не используется
|proxy.server|адрес прокси-сервера|Если параметр задан, то будут использованы ручные настройки прокси: имя сервера, порт, логин, пароль. Если параметр не задан, но задан proxy.use=true - используется системный прокси.
|proxy.port|Порт прокси-сервера|используется только если задан proxy.server
|proxy.user|Имя пользователя прокси-сервера|используется только если задан proxy.server
|proxy.password|Пароль прокси-сервера|используется только если задан proxy.server
|proxy.osAuthentication|true/false|Авторизация на прокси средствами ОС. Используется только если задан proxy.server

#### Пример использования

# использование системного прокси
ovm config proxy.use true

# ручные настройки прокси
ovm config proxy.use true
ovm config proxy.server enterpise-proxy.server.lan
ovm config proxy.osAuthentication true

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

```
Приложение: ovm
OneScript Version Manager v1.0.0
OneScript Version Manager v1.0.0-RC14
Строка запуска: ovm [OPTIONS] КОМАНДА [аргументы...]
Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]
Опции:
-v, --version показать версию и выйти
Expand All @@ -188,6 +228,7 @@ C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
list, ls Вывести список установленных и/или доступных версий OneScript
run, r Запустить исполняемый файл в окружении указанной версии OneScript
which, w Вывести путь к установленной версии OneScript
config Настройки ovm. Прокси, сервера и т.п.
Для вывода справки по доступным командам наберите: ovm КОМАНДА --help
```
2 changes: 1 addition & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
.АдресАвтора("nixel2007@gmail.com")
.Описание("OneScript Version Manager")
.ВерсияСреды("1.0.20")
// .ВключитьФайл("src")
.ЗависитОт("json")
.ЗависитОт("1commands", "1.3.2")
.ЗависитОт("fluent", "0.3.1")
.ЗависитОт("fs")
Expand Down
5 changes: 5 additions & 0 deletions src/cmd/ovm.os
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@
"Вывести путь к установленной версии OneScript",
Новый КомандаWhich()
);
КонсольноеПриложение.ДобавитьКоманду(
"config",
"Настройки ovm. Прокси, сервера и т.п.",
Новый КомандаConfig()
);

КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект);
КонсольноеПриложение.Запустить(АргументыКоманднойСтроки);
Expand Down
32 changes: 32 additions & 0 deletions src/cmd/Классы/КомандаConfig.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#Использовать "../../core"

Процедура ОписаниеКоманды(КомандаПриложения) Экспорт

КомандаПриложения.Аргумент(
"NAME",
,
"Название опции")
.ТСтрока();

КомандаПриложения.Аргумент(
"VALUE",
,
"Значение опции (массив строк)")
.ТСтрока();

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

// Обработчик выполнения команды
//
// Параметры:
// КомандаПриложения - КомандаПриложения - Выполняемая команда
//
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
Имя = КомандаПриложения.ЗначениеАргумента("NAME");
Значение = КомандаПриложения.ЗначениеАргумента("VALUE");

Хранилище = ПараметрыOVM.ХранилищеНастроек();
Хранилище.Установить(Имя, Значение);
Хранилище.Записать();

КонецПроцедуры
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
// Строка - Строковое представление версии
//
Функция Версия() Экспорт
Версия = "1.0.0-RC14";
Версия = "1.0.0-RC15";
Возврат Версия;
КонецФункции
6 changes: 4 additions & 2 deletions src/core/Классы/АктиваторOneScript.os
Original file line number Diff line number Diff line change
Expand Up @@ -393,9 +393,11 @@
Команда = Новый Команда;
Команда.УстановитьКоманду("where");
Команда.ДобавитьПараметр("oscript");
Команда.УстановитьПравильныйКодВозврата(0);

Команда.Исполнить();
КодВозврата = Команда.Исполнить();
Если КодВозврата <> 0 Тогда
Возврат Ложь;
КонецЕсли;

ВыводКоманды = Команда.ПолучитьВывод();
Лог.Отладка(ВыводКоманды);
Expand Down
33 changes: 32 additions & 1 deletion src/core/Классы/УстановщикOneScript.os
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#Использовать 1commands
#Использовать fs
#Использовать tempfiles
#Использовать logos

Перем ЭтоWindows;
Перем Лог;
Expand Down Expand Up @@ -62,13 +63,43 @@
ПутьКСохраняемомуФайлу = ВременныеФайлы.НовоеИмяФайла("zip");

АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт();

СерверПрокси = ПараметрыOVM.ЗначениеНастройки("proxy.server");
ИспользоватьПрокси = ПараметрыOVM.ЗначениеНастройки("proxy.use");

Если ИспользоватьПрокси = "true" Тогда
Если Не ЗначениеЗаполнено(СерверПрокси) Тогда
Лог.Отладка("Использую системный прокси");
Прокси = Новый ИнтернетПрокси(Истина);
ИначеЕсли ЗначениеЗаполнено(СерверПрокси) Тогда
Лог.Отладка("Использую прокси %1", ПараметрыOVM.ЗначениеНастройки("proxy.server"));
Прокси = Новый ИнтернетПрокси();
Прокси.Установить("http",
ПараметрыOVM.ЗначениеНастройки("proxy.server"),
ПараметрыOVM.ЗначениеНастройки("proxy.port"),
ПараметрыOVM.ЗначениеНастройки("proxy.user"),
ПараметрыOVM.ЗначениеНастройки("proxy.password"),
ПараметрыOVM.ЗначениеНастройки("proxy.osAuthentication"));

Прокси.Установить("https",
ПараметрыOVM.ЗначениеНастройки("proxy.server"),
ПараметрыOVM.ЗначениеНастройки("proxy.port"),
ПараметрыOVM.ЗначениеНастройки("proxy.user"),
ПараметрыOVM.ЗначениеНастройки("proxy.password"),
ПараметрыOVM.ЗначениеНастройки("proxy.osAuthentication"));
КонецЕсли;
Иначе
Лог.Отладка("Прокси не используется");
Прокси = Неопределено;
КонецЕсли;

Таймаут = 10;
Соединение = Новый HTTPСоединение(
АдресСайтаОСкрипт,
,
,
,
,
Прокси,
Таймаут
);

Expand Down
115 changes: 115 additions & 0 deletions src/core/Классы/ФайлНастроек.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
#Использовать fs
#Использовать logos

Перем ЗначенияНастроек;
Перем Индекс;
Перем ПутьКФайлу;

Перем Лог;

Процедура ПриСозданииОбъекта(Знач ИмяФайлаНастроек)
ПутьКФайлу = ИмяФайлаНастроек;
Лог = Логирование.ПолучитьЛог("oscript.app.ovm");
ПрочитатьНастройки();
КонецПроцедуры

Функция Получить(Знач Имя) Экспорт
Лог.Отладка("Запрошено значение %1", Имя);
НомерСтроки = Индекс[Имя];
Если НомерСтроки = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
Значение = ЗначенияНастроек[НомерСтроки].Значение;
Лог.Отладка("Получено значение %1=%2", Имя, Значение);
Возврат Значение;
КонецФункции

Процедура Установить(Знач Имя, Знач Значение) Экспорт

РегулярноеВыражение = Новый РегулярноеВыражение("[A-Za-z0-9\.]+");
РегулярноеВыражение.Многострочный = Ложь;
Если Не РегулярноеВыражение.Совпадает(Имя) Тогда
ВызватьИсключение "Некорректно задано имя параметра";
КонецЕсли;

НомерСтроки = Индекс[Имя];
Если НомерСтроки = Неопределено Тогда
НомерСтроки = ЗначенияНастроек.Количество();
Индекс[Имя] = НомерСтроки;
СтрокаНастроек = ЗначенияНастроек.Добавить();
СтрокаНастроек.Имя = Имя;
КонецЕсли;

ЗначенияНастроек[НомерСтроки].Значение = Значение;
КонецПроцедуры

Процедура Записать() Экспорт

ФайлОпций = Новый Файл(ПутьКФайлу);
ФС.ОбеспечитьКаталог(ФайлОпций.Путь);

ТД = Новый ТекстовыйДокумент();
Для Каждого Настройка Из ЗначенияНастроек Цикл

Если ЗначениеЗаполнено(Настройка.Имя) Тогда
ТД.ДобавитьСтроку(СтрШаблон("%1=%2", Настройка.Имя, Настройка.Значение));
Иначе
ТД.ДобавитьСтроку(Настройка.Содержимое);
КонецЕсли;
КонецЦикла;

ТД.Записать(ПутьКФайлу);

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

// ------------------------------------------------------
Процедура ПрочитатьНастройки()

Если Не ФС.ФайлСуществует(ПутьКФайлу) Тогда
Лог.Отладка("Отсутствует файл настроек %1", ПутьКФайлу);
Возврат;
КонецЕсли;

ТД = Новый ТекстовыйДокумент();
ТД.Прочитать(ПутьКФайлу);

Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу);
Для Сч = 1 По ТД.КоличествоСтрок() Цикл
СтрокаНастроек = ТД.ПолучитьСтроку(Сч);
Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда
ДобавитьНеактивнуюСтроку(СтрокаНастроек);
Продолжить;
КонецЕсли;

Поз = СтрНайти(СтрокаНастроек, "=");
Если Поз = 0 Тогда
ДобавитьНеактивнуюСтроку(СтрокаНастроек);
Продолжить;
КонецЕсли;

Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1));
Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1));

Попытка
Установить(Ключ, Значение);
Исключение
// сбойный ключ
Лог.Ошибка("Ключ настроек %1 некорректен", Ключ);
ДобавитьНеактивнуюСтроку(СтрокаНастроек);
КонецПопытки;
КонецЦикла;

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

Процедура ДобавитьНеактивнуюСтроку(Знач Содержимое)
СтрокаНастроек = ЗначенияНастроек.Добавить();
СтрокаНастроек.Содержимое = Содержимое;
КонецПроцедуры

// ------------------------------------------------------
ЗначенияНастроек = Новый ТаблицаЗначений();
ЗначенияНастроек.Колонки.Добавить("Имя");
ЗначенияНастроек.Колонки.Добавить("Значение");
ЗначенияНастроек.Колонки.Добавить("Содержимое");

Индекс = Новый Соответствие();
25 changes: 24 additions & 1 deletion src/core/Модули/ПараметрыOVM.os
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
Перем Лог;
Перем ОсновнойСпособВывода;

Перем ФайлНастроек;

// Путь к каталогу установки версий OneScript по умолчанию
//
// Возвращаемое значение:
Expand All @@ -29,7 +31,7 @@
// Строка - Адрес сайта OneScript
//
Функция АдресСайтаОСкрипт() Экспорт
Возврат "https://oscript.io";
Возврат ЗначениеНастройки("oscript.server", "https://oscript.io");
КонецФункции

// Полный адрес к каталогу дистрибутивов OneScript
Expand Down Expand Up @@ -88,9 +90,30 @@

КонецФункции

//////////////////////////////////////////////////////////////////////

Функция ЗначениеНастройки(Знач Ключ, Знач ЗначениеПоУмолчанию = Неопределено) Экспорт
Опция = ФайлНастроек.Получить(Ключ);
Если Опция = Неопределено Тогда
Возврат ЗначениеПоУмолчанию;
КонецЕсли;

Возврат Опция;

КонецФункции

Функция ХранилищеНастроек() Экспорт
Возврат ФайлНастроек;
КонецФункции

//////////////////////////////////////////////////////////////////////

СистемнаяИнформация = Новый СистемнаяИнформация;
ОсновнойСпособВывода = ЛогосАппендер;

Лог = Логирование.ПолучитьЛог("oscript.app.ovm");
Лог.УстановитьРаскладку(ЭтотОбъект);
Лог.ДобавитьСпособВывода(ОсновнойСпособВывода);

ИмяФайлаНастроек = ОбъединитьПути(КаталогУстановкиПоУмолчанию(), "ovm.config");
ФайлНастроек = Новый ФайлНастроек(ИмяФайлаНастроек);

0 comments on commit 9b01219

Please sign in to comment.