Skip to content

Commit 6ffeb25

Browse files
authored
Merge pull request #127 from khorevaa/feature/cli-lib
Переход с cmdline на cli
2 parents 414f5ab + 7ac79a4 commit 6ffeb25

33 files changed

+621
-566
lines changed

.gitignore

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
oscript_modules/
2-
test-reports/
3-
coverage/
1+
oscript_modules/*
2+
tests-reports/*
3+
coverage/*
4+
bdd-*.xml
45
*.ospx
56
src/oscript.cfg
67

.travis.yml

Lines changed: 63 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,77 @@
11
sudo: required
2+
language: generic
23

3-
dist: trusty
4+
notifications:
5+
email: false
6+
env:
7+
global:
8+
- CHANNEL=dev
9+
- PACKAGE_NAME=opm
10+
matrix:
11+
- OSCRIPT_VERSION=1_0_20
12+
- OSCRIPT_VERSION=night-build
13+
matrix:
14+
allow_failures:
15+
- env: OSCRIPT_VERSION=night-build
416

5-
addons:
6-
sonarqube: true
17+
services:
18+
- docker
719

20+
addons:
21+
sonarqube: true
22+
823
jdk:
924
- oraclejdk8
1025

11-
before_install:
12-
- sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
13-
- echo "deb http://download.mono-project.com/repo/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/mono-official.list
14-
- sudo apt-get update
15-
- sudo apt-get install mono-complete mono-devel
16-
- wget -O os.deb http://oscript.io/downloads/night-build/deb
17-
- sudo dpkg -i os.deb; sudo apt install -f
18-
- oscript
19-
- sudo opm install 1testrunner
20-
- sudo opm install 1bdd
26+
before_install:
27+
# Load cached docker images
28+
- if [[ -d $HOME/docker ]]; then ls $HOME/docker/*.tar.gz | xargs -I {file} sh -c "zcat {file} | docker load"; fi
29+
30+
before_cache:
31+
# Save tagged docker images
32+
- >
33+
mkdir -p $HOME/docker && docker images -a --filter='dangling=false' --format '{{.Repository}}:{{.Tag}} {{.ID}}'
34+
| xargs -n 2 -t sh -c 'test -e $HOME/docker/$1.tar.gz || docker save $0 | gzip -2 > $HOME/docker/$1.tar.gz'
2135
2236
install:
23-
- sudo oscript /usr/share/oscript/lib/opm/src/opm.os install -l
37+
- docker pull evilbeaver/onescript:1.0.19
38+
39+
script:
40+
- docker version
41+
- docker run -it -e OSCRIPT_VERSION=$OSCRIPT_VERSION -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; sh /work_dir/travis-ci.sh; exit' | tee /tmp/test.log
42+
- grep 'Результат прогона тестов <Да>' /tmp/test.log
43+
after_success:
44+
# - bash <(curl -s https://codecov.io/bash)
45+
- ./sonar-qube.sh
2446

2547
cache:
2648
directories:
2749
- '$HOME/.m2/repository'
2850
- '$HOME/.sonar/cache'
29-
30-
script:
31-
- ./travis.sh
51+
- '$HOME/docker'
52+
jobs:
53+
include:
54+
- stage: Сборка и публикация github & hub.oscript.io
55+
script: skip
56+
before_deploy:
57+
- docker run -it -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm build ./ ; exit'
58+
deploy:
59+
- provider: releases
60+
api_key: "$GITHUB_OAUTH_TOKEN"
61+
file_glob: true
62+
file: $PACKAGE_NAME*.ospx
63+
skip_cleanup: true
64+
on:
65+
branch: master
66+
tags: true
67+
- provider: script
68+
skip_cleanup: true
69+
script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel dev --file ./$PACKAGE_NAME-*.ospx; exit'
70+
on:
71+
branch: develop
72+
- provider: script
73+
skip_cleanup: true
74+
script: docker run -it -e GITHUB_OAUTH_TOKEN=$GITHUB_OAUTH_TOKEN -v $(pwd):/work_dir evilbeaver/onescript:1.0.19 sh -c 'cd /work_dir; opm push --token $GITHUB_OAUTH_TOKEN --channel stable --file ./$PACKAGE_NAME-*.ospx; exit'
75+
on:
76+
branch: master
77+
tags: true

features/step_definitions/Настройки.os

Lines changed: 122 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
22
#Использовать asserts
33

4-
#Использовать "../../src"
4+
#Использовать "../../src/core"
55

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

@@ -33,10 +33,11 @@
3333
Процедура ЯЧитаюНастройкиИзФайла(Знач ПутьФайла) Экспорт
3434
Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла));
3535
// Ожидаем.Что(Файл.Существует(), СтрШаблон("Ожидали, что файл <%1> существует, а это не так!", Файл.ПолноеИмя)).ЭтоИстина();
36+
НастройкиOpm.СброситьНастройки();
37+
НастроитьOpmИзФайла(Файл.ПолноеИмя);
38+
// НастройкиOpm.УстановитьФайлНастроек(Файл.ПолноеИмя);
3639

37-
НастройкиПриложенияOpm.УстановитьФайлНастроек(Файл.ПолноеИмя);
38-
39-
Настройки = НастройкиПриложенияOpm.Получить();
40+
Настройки = НастройкиOpm.ПолучитьНастройки();
4041
БДД.СохранитьВКонтекст(КлючКонтекста(), Настройки);
4142
КонецПроцедуры
4243

@@ -75,6 +76,123 @@
7576
Возврат Значение;
7677
КонецФункции
7778

79+
Процедура НастроитьOpmИзФайла(ПутьКФайлуНастроек)
80+
81+
НастройкиOpmИзФайлов = ПрочитатьФайлНастроек(ПутьКФайлуНастроек);
82+
83+
Если НастройкиOpmИзФайлов.Количество() = 0 Тогда
84+
Возврат;
85+
КонецЕсли;
86+
87+
НастройкиПроксиЕсть = ПолучитьЗначение(НастройкиOpmИзФайлов,"Прокси", Неопределено);
88+
89+
Если Не НастройкиПроксиЕсть = Неопределено Тогда
90+
91+
НастройкиПрокси = НастройкиOpmИзФайлов.Прокси;
92+
93+
Сервер = ПолучитьЗначение(НастройкиПрокси, "Сервер", "");
94+
Порт = Число(ПолучитьЗначение(НастройкиПрокси, "Порт", 0));
95+
Пользователь = ПолучитьЗначение(НастройкиПрокси, "Пользователь", "");
96+
Пароль = ПолучитьЗначение(НастройкиПрокси, "Пароль", "");
97+
98+
НастройкиOpm.УстановитьНастройкиПроксиСервера(Сервер, Порт, Пользователь, Пароль);
99+
100+
ПроксиПоУмолчанию = ПолучитьЗначение(НастройкиПрокси,"ПроксиПоУмолчанию", Неопределено);
101+
102+
Если Не ПроксиПоУмолчанию = Неопределено Тогда
103+
104+
НастройкиOpm.УстановитьСистемныеНастройкиПроксиСервера(ПроксиПоУмолчанию);
105+
106+
КонецЕсли;
107+
108+
ИспользованиеПрокси = ПолучитьЗначение(НастройкиПрокси,"ИспользованиеПрокси", Неопределено);
109+
110+
Если Не ИспользованиеПрокси = Неопределено Тогда
111+
112+
НастройкиOpm.УстановитьИспользованиеПрокси(ИспользованиеПрокси);
113+
114+
КонецЕсли;
115+
116+
КонецЕсли;
117+
118+
СоздаватьShСкриптЗапуска = ПолучитьЗначение(НастройкиOpmИзФайлов,"СоздаватьShСкриптЗапуска", Неопределено);
119+
120+
Если Не СоздаватьShСкриптЗапуска = Неопределено Тогда
121+
122+
НастройкиOpm.УстановитьСозданиеShСкриптЗапуска(СоздаватьShСкриптЗапуска);
123+
124+
КонецЕсли;
125+
126+
СервераПакетов = ПолучитьЗначение(НастройкиOpmИзФайлов,"СервераПакетов", Неопределено);
127+
128+
Если Не СервераПакетов = Неопределено Тогда
129+
Индекс = 1;
130+
131+
Для каждого ДополнительныйСервер Из СервераПакетов Цикл
132+
133+
Сервер = ПолучитьЗначение(ДополнительныйСервер, "Сервер", "");
134+
Порт = Число(ПолучитьЗначение(ДополнительныйСервер, "Порт", 80));
135+
ПутьНаСервере = ПолучитьЗначение(ДополнительныйСервер, "ПутьНаСервере", "/");
136+
Имя = ПолучитьЗначение(ДополнительныйСервер, "Имя", СтрШаблон("ДопСервер_%1",Индекс));
137+
Приоритет = Число(ПолучитьЗначение(ДополнительныйСервер, "Приоритет", 0));
138+
139+
Если ПустаяСтрока(Сервер) Тогда
140+
// Лог.Отладка("Для дополнительного сервера <%1> не задан адрес", Индекс);
141+
Продолжить;
142+
КонецЕсли;
143+
144+
НастройкиOpm.ДобавитьСерверПакетов(Имя, Сервер, ПутьНаСервере, Порт, Приоритет);
145+
Индекс = Индекс +1;
146+
147+
КонецЦикла;
148+
149+
КонецЕсли;
150+
151+
КонецПроцедуры
152+
153+
Функция ПрочитатьФайлНастроек(Знач ПутьФайлаНастроек)
154+
155+
Если НЕ Новый Файл(ПутьФайлаНастроек).Существует() Тогда
156+
Возврат НОвый Соответствие;
157+
КонецЕсли;
158+
159+
Текст = ПрочитатьФайл(ПутьФайлаНастроек);
160+
161+
Чтение = Новый ПарсерJSON;
162+
Настройки = Чтение.ПрочитатьJSON(Текст,,,Истина);
163+
164+
Возврат Настройки;
165+
166+
КонецФункции
167+
168+
Функция ПрочитатьФайл(Знач Путь)
169+
170+
Чтение = Новый ЧтениеТекста(Путь);
171+
Текст = Чтение.Прочитать();
172+
Чтение.Закрыть();
173+
174+
Возврат Текст;
175+
176+
КонецФункции
177+
178+
Функция ПолучитьЗначение(ВходящаяСтруктура, Ключ, ЗначениеПоУмолчанию)
179+
180+
Перем ЗначениеКлюча;
181+
182+
Если Не ВходящаяСтруктура.Свойство(Ключ, ЗначениеКлюча) Тогда
183+
184+
Возврат ЗначениеПоУмолчанию;
185+
186+
КонецЕсли;
187+
188+
Если НЕ ЗначениеЗаполнено(ЗначениеКлюча) Тогда
189+
Возврат ЗначениеПоУмолчанию;
190+
КонецЕсли;
191+
192+
Возврат ЗначениеКлюча;
193+
194+
КонецФункции
195+
78196
Функция КонвертироватьЗначениеПриНеобходимости(Знач ЗначениеНастройки)
79197
Если ТипЗнч(ЗначениеНастройки) = Тип("Строка") Тогда
80198
ЗначениеНастройки = НРег(ЗначениеНастройки);

features/Настройки.feature

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,34 +18,34 @@
1818
Допустим Я копирую файл "opm.cfg" из каталога "tests/fixtures" проекта в рабочий каталог
1919
Когда я читаю настройки из файла "opm.cfg"
2020
Тогда значение настройки "СоздаватьShСкриптЗапуска" равно "false"
21-
И значение настройки "Прокси.ИспользоватьПрокси" равно "false"
22-
И значение настройки "Прокси.ПроксиПоУмолчанию" равно "false"
23-
И значение настройки "Прокси.Сервер" равно ""
24-
И значение настройки "Прокси.Порт" равно 0
25-
И значение настройки "Прокси.Пользователь" равно ""
26-
И значение настройки "Прокси.Пароль" равно ""
27-
И значение настройки "Прокси.ИспользоватьАутентификациюОС" равно "false"
21+
И значение настройки "ИспользоватьПрокси" равно "false"
22+
И значение настройки "ИспользоватьСистемныйПрокси" равно "false"
23+
И значение настройки "НастройкиПрокси.Сервер" равно ""
24+
И значение настройки "НастройкиПрокси.Порт" равно 0
25+
И значение настройки "НастройкиПрокси.Пользователь" равно ""
26+
И значение настройки "НастройкиПрокси.Пароль" равно ""
27+
И значение настройки "НастройкиПрокси.ИспользоватьАутентификациюОС" равно "false"
2828

2929
Сценарий: Получение значения по умолчанию, если настройка не задана в файле настроек
3030
Допустим Я копирую файл "opm-incomplete.cfg" из каталога "tests/fixtures" проекта в рабочий каталог
3131
Когда я читаю настройки из файла "opm-incomplete.cfg"
3232
Тогда значение настройки "СоздаватьShСкриптЗапуска" равно "false"
33-
И значение настройки "Прокси.ИспользоватьПрокси" равно "false"
34-
И значение настройки "Прокси.ПроксиПоУмолчанию" равно "Истина"
35-
И значение настройки "Прокси.Сервер" равно "Неопределено"
36-
И значение настройки "Прокси.Порт" равно 0
37-
И значение настройки "Прокси.Пользователь" равно "Неопределено"
38-
И значение настройки "Прокси.Пароль" равно "Неопределено"
39-
И значение настройки "Прокси.ИспользоватьАутентификациюОС" равно "false"
33+
И значение настройки "ИспользоватьПрокси" равно "Истина"
34+
И значение настройки "ИспользоватьСистемныйПрокси" равно "Истина"
35+
И значение настройки "НастройкиПрокси.Сервер" равно ""
36+
И значение настройки "НастройкиПрокси.Порт" равно 0
37+
И значение настройки "НастройкиПрокси.Пользователь" равно ""
38+
И значение настройки "НастройкиПрокси.Пароль" равно ""
39+
И значение настройки "НастройкиПрокси.ИспользоватьАутентификациюОС" равно "false"
4040

4141
Сценарий: Получение значений по умолчанию, если файл настроек отсутствует
4242
Дано Файл "opm.cfg" не существует
4343
Когда я читаю настройки из файла "opm.cfg"
4444
Тогда значение настройки "СоздаватьShСкриптЗапуска" равно "false"
45-
И значение настройки "Прокси.ИспользоватьПрокси" равно "false"
46-
И значение настройки "Прокси.ПроксиПоУмолчанию" равно "Истина"
47-
И значение настройки "Прокси.Сервер" равно "Неопределено"
48-
И значение настройки "Прокси.Порт" равно 0
49-
И значение настройки "Прокси.Пользователь" равно "Неопределено"
50-
И значение настройки "Прокси.Пароль" равно "Неопределено"
51-
И значение настройки "Прокси.ИспользоватьАутентификациюОС" равно "false"
45+
И значение настройки "ИспользоватьПрокси" равно "false"
46+
И значение настройки "ИспользоватьСистемныйПрокси" равно "false"
47+
И значение настройки "НастройкиПрокси.Сервер" равно ""
48+
И значение настройки "НастройкиПрокси.Порт" равно ""
49+
И значение настройки "НастройкиПрокси.Пользователь" равно ""
50+
И значение настройки "НастройкиПрокси.Пароль" равно ""
51+
И значение настройки "НастройкиПрокси.ИспользоватьАутентификациюОС" равно "false"

packagedef

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
.ЗависитОт("json", "1.0.1")
5252
.ЗависитОт("fluent", "0.3.1")
5353
.ЗависитОт("logos", "1.0.2")
54-
.ЗависитОт("cmdline", "0.6.2")
54+
.ЗависитОт("cli", "0.9.10")
5555
.ЗависитОт("tempfiles", "0.2.2")
5656
.ЗависитОт("gitrunner", "1.5.1")
5757
.ВключитьФайл("src")
Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
1-
#!/bin/bash
2-
set -e
3-
4-
opm run coverage
5-
61
temp=`cat src/core/Модули/КонстантыOpm.os | grep "ВерсияПродукта = " | sed 's|[^"]*"||' | sed -r 's/".+//'`
72
version=${temp##*|}
83

94
if [ "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then
105
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
116
sonar-scanner \
12-
-Dsonar.host.url=http://sonar.silverbulleters.org \
7+
-Dsonar.host.url=https://sonar.silverbulleters.org \
138
-Dsonar.analysis.mode=issues \
149
-Dsonar.github.pullRequest=$TRAVIS_PULL_REQUEST \
1510
-Dsonar.github.repository=$TRAVIS_REPO_SLUG \
16-
-Dsonar.github.oauth=$SONAR_GITHUB_TOKEN \
11+
-Dsonar.github.oauth=$GITHUB_OAUTH_TOKEN \
1712
-Dsonar.login=$SONAR_TOKEN \
1813
-Dsonar.scanner.skip=false
1914

2015
elif [ "$TRAVIS_BRANCH" == "develop" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
2116
sonar-scanner \
22-
-Dsonar.host.url=http://sonar.silverbulleters.org \
17+
-Dsonar.host.url=https://sonar.silverbulleters.org \
2318
-Dsonar.login=$SONAR_TOKEN \
2419
-Dsonar.projectVersion=$version\
2520
-Dsonar.scanner.skip=false
2621
fi
27-
fi
22+
fi

0 commit comments

Comments
 (0)