Skip to content

Commit 9b01219

Browse files
committed
Merge branch 'release/v1.0.0-RC15'
2 parents 50f6b58 + fabe292 commit 9b01219

File tree

10 files changed

+258
-9
lines changed

10 files changed

+258
-9
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jdk:
1919
- openjdk11
2020

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

README.md

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,13 +170,53 @@ $ ovm which 1.0.19
170170
C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
171171
```
172172

173+
## Конфигурирование ovm
174+
175+
ovm имеет несколько конфигурационных параметров, управляющих его поведением. Эти параметры можно задать с помощью команды `config`
176+
177+
### Синтаксис команды
178+
179+
```sh
180+
$ ovm config <имя параметра> <значение>
181+
```
182+
183+
### Настройка сайта с релизами
184+
185+
```sh
186+
$ ovm config oscript.server https://internal.oscript.io
187+
```
188+
189+
### Настройка прокси-сервера
190+
191+
При работе за корпоративным прокси-сервером может потребоваться указание настроек прокси.
192+
Предусмотрены следующие параметры:
193+
194+
|Параметр|Возможное значение|Пояснение
195+
|-|-|-
196+
proxy.use|true/false|Включение использования прокси. Если параметр не задан - прокси не используется
197+
|proxy.server|адрес прокси-сервера|Если параметр задан, то будут использованы ручные настройки прокси: имя сервера, порт, логин, пароль. Если параметр не задан, но задан proxy.use=true - используется системный прокси.
198+
|proxy.port|Порт прокси-сервера|используется только если задан proxy.server
199+
|proxy.user|Имя пользователя прокси-сервера|используется только если задан proxy.server
200+
|proxy.password|Пароль прокси-сервера|используется только если задан proxy.server
201+
|proxy.osAuthentication|true/false|Авторизация на прокси средствами ОС. Используется только если задан proxy.server
202+
203+
#### Пример использования
204+
205+
# использование системного прокси
206+
ovm config proxy.use true
207+
208+
# ручные настройки прокси
209+
ovm config proxy.use true
210+
ovm config proxy.server enterpise-proxy.server.lan
211+
ovm config proxy.osAuthentication true
212+
173213
## Вывод команды ovm
174214

175215
```
176216
Приложение: ovm
177-
OneScript Version Manager v1.0.0
217+
OneScript Version Manager v1.0.0-RC14
178218
179-
Строка запуска: ovm [OPTIONS] КОМАНДА [аргументы...]
219+
Строка запуска: ovm [ОПЦИИ] КОМАНДА [аргументы...]
180220
181221
Опции:
182222
-v, --version показать версию и выйти
@@ -188,6 +228,7 @@ C:\Users\NikitaGryzlov\AppData\Local\ovm\1.0.19\bin\oscript.exe
188228
list, ls Вывести список установленных и/или доступных версий OneScript
189229
run, r Запустить исполняемый файл в окружении указанной версии OneScript
190230
which, w Вывести путь к установленной версии OneScript
231+
config Настройки ovm. Прокси, сервера и т.п.
191232
192233
Для вывода справки по доступным командам наберите: ovm КОМАНДА --help
193234
```

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
.АдресАвтора("[email protected]")
55
.Описание("OneScript Version Manager")
66
.ВерсияСреды("1.0.20")
7-
// .ВключитьФайл("src")
7+
.ЗависитОт("json")
88
.ЗависитОт("1commands", "1.3.2")
99
.ЗависитОт("fluent", "0.3.1")
1010
.ЗависитОт("fs")

src/cmd/ovm.os

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@
5656
"Вывести путь к установленной версии OneScript",
5757
Новый КомандаWhich()
5858
);
59+
КонсольноеПриложение.ДобавитьКоманду(
60+
"config",
61+
"Настройки ovm. Прокси, сервера и т.п.",
62+
Новый КомандаConfig()
63+
);
5964

6065
КонсольноеПриложение.УстановитьОсновноеДействие(ЭтотОбъект);
6166
КонсольноеПриложение.Запустить(АргументыКоманднойСтроки);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#Использовать "../../core"
2+
3+
Процедура ОписаниеКоманды(КомандаПриложения) Экспорт
4+
5+
КомандаПриложения.Аргумент(
6+
"NAME",
7+
,
8+
"Название опции")
9+
.ТСтрока();
10+
11+
КомандаПриложения.Аргумент(
12+
"VALUE",
13+
,
14+
"Значение опции (массив строк)")
15+
.ТСтрока();
16+
17+
КонецПроцедуры
18+
19+
// Обработчик выполнения команды
20+
//
21+
// Параметры:
22+
// КомандаПриложения - КомандаПриложения - Выполняемая команда
23+
//
24+
Процедура ВыполнитьКоманду(Знач КомандаПриложения) Экспорт
25+
Имя = КомандаПриложения.ЗначениеАргумента("NAME");
26+
Значение = КомандаПриложения.ЗначениеАргумента("VALUE");
27+
28+
Хранилище = ПараметрыOVM.ХранилищеНастроек();
29+
Хранилище.Установить(Имя, Значение);
30+
Хранилище.Записать();
31+
32+
КонецПроцедуры

src/cmd/Модули/ПараметрыПриложения.os

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
// Строка - Строковое представление версии
1414
//
1515
Функция Версия() Экспорт
16-
Версия = "1.0.0-RC14";
16+
Версия = "1.0.0-RC15";
1717
Возврат Версия;
1818
КонецФункции

src/core/Классы/АктиваторOneScript.os

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -393,9 +393,11 @@
393393
Команда = Новый Команда;
394394
Команда.УстановитьКоманду("where");
395395
Команда.ДобавитьПараметр("oscript");
396-
Команда.УстановитьПравильныйКодВозврата(0);
397396

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

400402
ВыводКоманды = Команда.ПолучитьВывод();
401403
Лог.Отладка(ВыводКоманды);

src/core/Классы/УстановщикOneScript.os

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#Использовать 1commands
22
#Использовать fs
33
#Использовать tempfiles
4+
#Использовать logos
45

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

6465
АдресСайтаОСкрипт = ПараметрыOVM.АдресСайтаОСкрипт();
66+
67+
СерверПрокси = ПараметрыOVM.ЗначениеНастройки("proxy.server");
68+
ИспользоватьПрокси = ПараметрыOVM.ЗначениеНастройки("proxy.use");
69+
70+
Если ИспользоватьПрокси = "true" Тогда
71+
Если Не ЗначениеЗаполнено(СерверПрокси) Тогда
72+
Лог.Отладка("Использую системный прокси");
73+
Прокси = Новый ИнтернетПрокси(Истина);
74+
ИначеЕсли ЗначениеЗаполнено(СерверПрокси) Тогда
75+
Лог.Отладка("Использую прокси %1", ПараметрыOVM.ЗначениеНастройки("proxy.server"));
76+
Прокси = Новый ИнтернетПрокси();
77+
Прокси.Установить("http",
78+
ПараметрыOVM.ЗначениеНастройки("proxy.server"),
79+
ПараметрыOVM.ЗначениеНастройки("proxy.port"),
80+
ПараметрыOVM.ЗначениеНастройки("proxy.user"),
81+
ПараметрыOVM.ЗначениеНастройки("proxy.password"),
82+
ПараметрыOVM.ЗначениеНастройки("proxy.osAuthentication"));
83+
84+
Прокси.Установить("https",
85+
ПараметрыOVM.ЗначениеНастройки("proxy.server"),
86+
ПараметрыOVM.ЗначениеНастройки("proxy.port"),
87+
ПараметрыOVM.ЗначениеНастройки("proxy.user"),
88+
ПараметрыOVM.ЗначениеНастройки("proxy.password"),
89+
ПараметрыOVM.ЗначениеНастройки("proxy.osAuthentication"));
90+
КонецЕсли;
91+
Иначе
92+
Лог.Отладка("Прокси не используется");
93+
Прокси = Неопределено;
94+
КонецЕсли;
95+
6596
Таймаут = 10;
6697
Соединение = Новый HTTPСоединение(
6798
АдресСайтаОСкрипт,
6899
,
69100
,
70101
,
71-
,
102+
Прокси,
72103
Таймаут
73104
);
74105

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
#Использовать fs
2+
#Использовать logos
3+
4+
Перем ЗначенияНастроек;
5+
Перем Индекс;
6+
Перем ПутьКФайлу;
7+
8+
Перем Лог;
9+
10+
Процедура ПриСозданииОбъекта(Знач ИмяФайлаНастроек)
11+
ПутьКФайлу = ИмяФайлаНастроек;
12+
Лог = Логирование.ПолучитьЛог("oscript.app.ovm");
13+
ПрочитатьНастройки();
14+
КонецПроцедуры
15+
16+
Функция Получить(Знач Имя) Экспорт
17+
Лог.Отладка("Запрошено значение %1", Имя);
18+
НомерСтроки = Индекс[Имя];
19+
Если НомерСтроки = Неопределено Тогда
20+
Возврат Неопределено;
21+
КонецЕсли;
22+
Значение = ЗначенияНастроек[НомерСтроки].Значение;
23+
Лог.Отладка("Получено значение %1=%2", Имя, Значение);
24+
Возврат Значение;
25+
КонецФункции
26+
27+
Процедура Установить(Знач Имя, Знач Значение) Экспорт
28+
29+
РегулярноеВыражение = Новый РегулярноеВыражение("[A-Za-z0-9\.]+");
30+
РегулярноеВыражение.Многострочный = Ложь;
31+
Если Не РегулярноеВыражение.Совпадает(Имя) Тогда
32+
ВызватьИсключение "Некорректно задано имя параметра";
33+
КонецЕсли;
34+
35+
НомерСтроки = Индекс[Имя];
36+
Если НомерСтроки = Неопределено Тогда
37+
НомерСтроки = ЗначенияНастроек.Количество();
38+
Индекс[Имя] = НомерСтроки;
39+
СтрокаНастроек = ЗначенияНастроек.Добавить();
40+
СтрокаНастроек.Имя = Имя;
41+
КонецЕсли;
42+
43+
ЗначенияНастроек[НомерСтроки].Значение = Значение;
44+
КонецПроцедуры
45+
46+
Процедура Записать() Экспорт
47+
48+
ФайлОпций = Новый Файл(ПутьКФайлу);
49+
ФС.ОбеспечитьКаталог(ФайлОпций.Путь);
50+
51+
ТД = Новый ТекстовыйДокумент();
52+
Для Каждого Настройка Из ЗначенияНастроек Цикл
53+
54+
Если ЗначениеЗаполнено(Настройка.Имя) Тогда
55+
ТД.ДобавитьСтроку(СтрШаблон("%1=%2", Настройка.Имя, Настройка.Значение));
56+
Иначе
57+
ТД.ДобавитьСтроку(Настройка.Содержимое);
58+
КонецЕсли;
59+
КонецЦикла;
60+
61+
ТД.Записать(ПутьКФайлу);
62+
63+
КонецПроцедуры
64+
65+
// ------------------------------------------------------
66+
Процедура ПрочитатьНастройки()
67+
68+
Если Не ФС.ФайлСуществует(ПутьКФайлу) Тогда
69+
Лог.Отладка("Отсутствует файл настроек %1", ПутьКФайлу);
70+
Возврат;
71+
КонецЕсли;
72+
73+
ТД = Новый ТекстовыйДокумент();
74+
ТД.Прочитать(ПутьКФайлу);
75+
76+
Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу);
77+
Для Сч = 1 По ТД.КоличествоСтрок() Цикл
78+
СтрокаНастроек = ТД.ПолучитьСтроку(Сч);
79+
Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда
80+
ДобавитьНеактивнуюСтроку(СтрокаНастроек);
81+
Продолжить;
82+
КонецЕсли;
83+
84+
Поз = СтрНайти(СтрокаНастроек, "=");
85+
Если Поз = 0 Тогда
86+
ДобавитьНеактивнуюСтроку(СтрокаНастроек);
87+
Продолжить;
88+
КонецЕсли;
89+
90+
Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1));
91+
Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1));
92+
93+
Попытка
94+
Установить(Ключ, Значение);
95+
Исключение
96+
// сбойный ключ
97+
Лог.Ошибка("Ключ настроек %1 некорректен", Ключ);
98+
ДобавитьНеактивнуюСтроку(СтрокаНастроек);
99+
КонецПопытки;
100+
КонецЦикла;
101+
102+
КонецПроцедуры
103+
104+
Процедура ДобавитьНеактивнуюСтроку(Знач Содержимое)
105+
СтрокаНастроек = ЗначенияНастроек.Добавить();
106+
СтрокаНастроек.Содержимое = Содержимое;
107+
КонецПроцедуры
108+
109+
// ------------------------------------------------------
110+
ЗначенияНастроек = Новый ТаблицаЗначений();
111+
ЗначенияНастроек.Колонки.Добавить("Имя");
112+
ЗначенияНастроек.Колонки.Добавить("Значение");
113+
ЗначенияНастроек.Колонки.Добавить("Содержимое");
114+
115+
Индекс = Новый Соответствие();

src/core/Модули/ПараметрыOVM.os

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
Перем Лог;
55
Перем ОсновнойСпособВывода;
66

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

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

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

93+
//////////////////////////////////////////////////////////////////////
94+
95+
Функция ЗначениеНастройки(Знач Ключ, Знач ЗначениеПоУмолчанию = Неопределено) Экспорт
96+
Опция = ФайлНастроек.Получить(Ключ);
97+
Если Опция = Неопределено Тогда
98+
Возврат ЗначениеПоУмолчанию;
99+
КонецЕсли;
100+
101+
Возврат Опция;
102+
103+
КонецФункции
104+
105+
Функция ХранилищеНастроек() Экспорт
106+
Возврат ФайлНастроек;
107+
КонецФункции
108+
109+
//////////////////////////////////////////////////////////////////////
110+
91111
СистемнаяИнформация = Новый СистемнаяИнформация;
92112
ОсновнойСпособВывода = ЛогосАппендер;
93113

94114
Лог = Логирование.ПолучитьЛог("oscript.app.ovm");
95115
Лог.УстановитьРаскладку(ЭтотОбъект);
96116
Лог.ДобавитьСпособВывода(ОсновнойСпособВывода);
117+
118+
ИмяФайлаНастроек = ОбъединитьПути(КаталогУстановкиПоУмолчанию(), "ovm.config");
119+
ФайлНастроек = Новый ФайлНастроек(ИмяФайлаНастроек);

0 commit comments

Comments
 (0)