Skip to content

Commit dc37e06

Browse files
committed
Merge remote-tracking branch 'evil/develop' into feature/issue-2-linux-app
2 parents 3b49352 + e4c44f5 commit dc37e06

35 files changed

+1169
-158
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
oscript_modules/

.vscode/settings.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
// Поместите параметры в этот файл, чтобы перезаписать параметры по умолчанию и пользовательские параметры.
2+
{
3+
"language-1c-bsl.linterEntryPoint": "src/opm.os"
4+
}

.vscode/tasks.json

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,258 @@
1+
{
2+
"version": "0.1.0",
3+
"windows": {
4+
"command": "cmd",
5+
"args": ["/c", "chcp 65001 ; "]
6+
},
7+
"linux": {
8+
"command": "sh",
9+
"args": ["-c"]
10+
},
11+
"isShellCommand": true,
12+
"showOutput": "silent",
13+
"_runner": "terminal",
14+
"tasks": [
15+
{
16+
"taskName": "Testing project",
17+
"args": [
18+
"1testrunner",
19+
"-runall",
20+
"${workspaceRoot}/tests"
21+
],
22+
"echoCommand": true,
23+
"showOutput": "always",
24+
"suppressTaskName": true,
25+
// "isBuildCommand": false,
26+
"isTestCommand": false,
27+
"problemMatcher": {
28+
"fileLocation": "absolute",
29+
"pattern": {
30+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
31+
"file": 1,
32+
"location": 2,
33+
"message": 3
34+
}
35+
}
36+
},
37+
{
38+
"taskName": "Testing current test-file",
39+
"args": [
40+
"1testrunner",
41+
"-run",
42+
"${file}"
43+
],
44+
"echoCommand": true,
45+
"showOutput": "always",
46+
"suppressTaskName": true,
47+
"isBuildCommand": false,
48+
"isTestCommand": true,
49+
"problemMatcher": {
50+
"fileLocation": "absolute",
51+
"pattern": {
52+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
53+
"file": 1,
54+
"location": 2,
55+
"message": 3
56+
}
57+
}
58+
},
59+
{
60+
"taskName": "Opm: package build",
61+
"args": [
62+
"opm",
63+
"build",
64+
"${workspaceRoot}"
65+
],
66+
"echoCommand": true,
67+
"showOutput": "always",
68+
"suppressTaskName": true,
69+
"isBuildCommand": false
70+
},
71+
{
72+
"taskName": "Exec all features",
73+
"args": [
74+
"1bdd",
75+
"${workspaceRoot}/features",
76+
"-out",
77+
"${workspaceRoot}/exec.log"
78+
],
79+
"echoCommand": true,
80+
"showOutput": "always",
81+
"suppressTaskName": true,
82+
"isBuildCommand": true,
83+
"isTestCommand": false,
84+
"problemMatcher": {
85+
"fileLocation": "absolute",
86+
"pattern": {
87+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
88+
"file": 1,
89+
"location": 2,
90+
"message": 3
91+
}
92+
}
93+
},
94+
{
95+
"taskName": "Exec feature",
96+
"args": [
97+
"1bdd",
98+
"${file}",
99+
"-fail-fast",
100+
"-out",
101+
"${workspaceRoot}/exec.log"
102+
],
103+
"echoCommand": true,
104+
"showOutput": "always",
105+
"suppressTaskName": true,
106+
"isBuildCommand": false,
107+
"isTestCommand": true,
108+
"problemMatcher": {
109+
"fileLocation": "absolute",
110+
"pattern": [
111+
{
112+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
113+
"file": 1,
114+
"location": 2,
115+
"message": 3
116+
}
117+
]
118+
}
119+
},
120+
{
121+
"taskName": "Exec feature for current step def",
122+
"args": [
123+
"1bdd",
124+
"${fileDirname}/../${fileBasenameNoExtension}.feature",
125+
"-fail-fast",
126+
"-out",
127+
"${workspaceRoot}/exec.log"
128+
],
129+
"echoCommand": true,
130+
"showOutput": "always",
131+
"suppressTaskName": true,
132+
"isBuildCommand": false,
133+
"isTestCommand": true,
134+
"problemMatcher": {
135+
"fileLocation": "absolute",
136+
"pattern": [
137+
{
138+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
139+
"file": 1,
140+
"location": 2,
141+
"message": 3
142+
}
143+
]
144+
}
145+
},
146+
{
147+
"taskName": "Exec feature + debug",
148+
"args": [
149+
"1bdd",
150+
"${file}",
151+
"-fail-fast",
152+
"-verbose",
153+
"on",
154+
"-out",
155+
"${workspaceRoot}/exec.log"
156+
],
157+
"echoCommand": true,
158+
"showOutput": "always",
159+
"suppressTaskName": true,
160+
// "isBuildCommand": false,
161+
"isTestCommand": false,
162+
"problemMatcher": {
163+
"fileLocation": "absolute",
164+
"pattern": {
165+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
166+
"file": 1,
167+
"location": 2,
168+
"message": 3
169+
}
170+
}
171+
},
172+
{
173+
"taskName": "Generate feature steps",
174+
"args": [
175+
"1bdd",
176+
"gen",
177+
"${file}",
178+
"-out",
179+
"${workspaceRoot}/exec.log"
180+
],
181+
"echoCommand": true,
182+
"showOutput": "always",
183+
"suppressTaskName": true,
184+
"isBuildCommand": false,
185+
"isTestCommand": false,
186+
"problemMatcher": {
187+
"fileLocation": "absolute",
188+
"pattern": {
189+
"regexp": "{Модуль\\s+(.+)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+([^{]*)",
190+
"file": 1,
191+
"location": 2,
192+
"message": 3
193+
}
194+
}
195+
},
196+
{
197+
"taskName": "OneScript: compile",
198+
"args": [
199+
"oscript",
200+
"-encoding=utf-8",
201+
"-compile",
202+
"${file}"
203+
],
204+
"echoCommand": true,
205+
"showOutput": "always",
206+
"suppressTaskName": true,
207+
"isBuildCommand": false
208+
},
209+
{
210+
"taskName": "OneScript: check",
211+
"args": [
212+
"oscript",
213+
"-encoding=utf-8",
214+
"-check",
215+
"${file}"
216+
],
217+
"echoCommand": true,
218+
"showOutput": "always",
219+
"suppressTaskName": true,
220+
"isBuildCommand": false
221+
},
222+
{
223+
"taskName": "OneScript: make",
224+
"args": [
225+
"oscript",
226+
"-encoding=utf-8",
227+
"-make",
228+
"${file}",
229+
"${fileBasename}.exe"
230+
],
231+
"echoCommand": true,
232+
"showOutput": "always",
233+
"suppressTaskName": true,
234+
"isBuildCommand": false
235+
},
236+
{
237+
"taskName": "OneScript: run",
238+
"args": [
239+
"oscript",
240+
"-encoding=utf-8",
241+
"${file}"
242+
],
243+
"echoCommand": true,
244+
"showOutput": "always",
245+
"suppressTaskName": true,
246+
"isBuildCommand": true,
247+
"problemMatcher": {
248+
"fileLocation": "absolute",
249+
"pattern": {
250+
"regexp": "^{Модуль\\s+(.*)\\s\\/\\s.*:\\s+(\\d+)\\s+\\/\\s+(.*)}$",
251+
"file": 1,
252+
"location": 2,
253+
"message": 3
254+
}
255+
}
256+
}
257+
]
258+
}

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# opm
2+
[![GitHub release](https://img.shields.io/github/release/oscript-library/opm.svg)](https://github.com/oscript-library/opm/releases)
3+
4+
OneScript Package Manager
5+
6+
Возможные команды:
7+
- build - Собрать пакет из исходников
8+
- run - Выполнить произвольную задачу
9+
- test - Выполнить тестирование проекта
10+
- prepare - Подготовить новый каталог разрабатываемого пакета
11+
- install - Выполнить установку. Если указано имя пакета, происходит установка из хаба или из файла. В обратном случае устанавливаются зависимости текущего пакета по файлу packagedef.
12+
- update - Обновить пакет
13+
- app - Создать bat-файл для запуска скрипта в указанном каталоге
14+
- config - Задать пользовательские настройки
15+
- list - Вывести список пакетов
16+
- help - Справка по командам
17+
18+
Наберите *opm help <команда>*, чтобы вывести справку по команде
19+
20+
Справка из википедии: [Система управления пакетами](https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0%D0%BC%D0%B8)
21+
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
// Реализация шагов BDD-фич/сценариев c помощью фреймворка https://github.com/artbear/1bdd
2+
#Использовать asserts
3+
4+
#Использовать "../../src"
5+
6+
Перем БДД; //контекст фреймворка 1bdd
7+
8+
// Метод выдает список шагов, реализованных в данном файле-шагов
9+
Функция ПолучитьСписокШагов(КонтекстФреймворкаBDD) Экспорт
10+
БДД = КонтекстФреймворкаBDD;
11+
12+
ВсеШаги = Новый Массив;
13+
14+
ВсеШаги.Добавить("ЯЧитаюНастройкиИзФайла");
15+
ВсеШаги.Добавить("ЗначениеНастройкиРавно");
16+
17+
Возврат ВсеШаги;
18+
КонецФункции
19+
20+
// Реализация шагов
21+
22+
// Процедура выполняется перед запуском каждого сценария
23+
Процедура ПередЗапускомСценария(Знач Узел) Экспорт
24+
25+
КонецПроцедуры
26+
27+
// Процедура выполняется после завершения каждого сценария
28+
Процедура ПослеЗапускаСценария(Знач Узел) Экспорт
29+
30+
КонецПроцедуры
31+
32+
//я читаю настройки из файла "opm.cfg"
33+
Процедура ЯЧитаюНастройкиИзФайла(Знач ПутьФайла) Экспорт
34+
Файл = Новый Файл(ОбъединитьПути(ТекущийКаталог(), ПутьФайла));
35+
Ожидаем.Что(Файл.Существует(), СтрШаблон("Ожидали, что файл <%1> существует, а это не так!", Файл.ПолноеИмя)).ЭтоИстина();
36+
37+
НастройкиПриложения.УстановитьФайлНастроек(Файл.ПолноеИмя);
38+
39+
Настройки = НастройкиПриложения.Получить();
40+
БДД.СохранитьВКонтекст(КлючКонтекста(), Настройки);
41+
КонецПроцедуры
42+
43+
//значение настройки "СоздаватьShСкриптЗапуска" равно "false"
44+
Процедура ЗначениеНастройкиРавно(Знач КлючНастройки, Знач ЗначениеНастройки) Экспорт
45+
Настройки = БДД.ПолучитьИзКонтекста(КлючКонтекста());
46+
47+
Ожидаем.Что(КлючНастройки, "Ключ настройки не заполнен").Заполнено();
48+
49+
Значение = ЗначениеНастройки(Настройки, КлючНастройки);
50+
51+
ЗначениеНастройки = КонвертироватьЗначениеПриНеобходимости(ЗначениеНастройки);
52+
53+
Ожидаем.Что(Значение, СтрШаблон("Не совпадает значение настройки с именем <%1>", КлючНастройки)).Равно(ЗначениеНастройки);
54+
КонецПроцедуры
55+
56+
// учитываются простые (СоздаватьShСкриптЗапуска) и иерархические ключи (Прокси.ИспользоватьПрокси)
57+
Функция ЗначениеНастройки(Знач Настройки, Знач КлючНастройки)
58+
МассивИерархии = СтрРазделить(КлючНастройки, ".", Ложь);
59+
ПутьКлюча = "";
60+
ТекущиеНастройки = настройки;
61+
Для Счетчик = 0 По МассивИерархии.ВГраница() Цикл
62+
ТекущийКлюч = МассивИерархии[Счетчик];
63+
Если ПустаяСтрока(ПутьКлюча) Тогда
64+
ПутьКлюча = ТекущийКлюч;
65+
Иначе
66+
ПутьКлюча = СтрШаблон("%1.%2", ПутьКлюча, ТекущийКлюч);
67+
КонецЕсли;
68+
69+
Значение = Неопределено;
70+
ЕстьНастройка = ТекущиеНастройки.Свойство(ТекущийКлюч, Значение);
71+
Ожидаем.Что(ЕстьНастройка, СтрШаблон("Не удалось получить настройку с именем <%1>", ПутьКлюча)).ЭтоИстина();
72+
ТекущиеНастройки = Значение;
73+
КонецЦикла;
74+
75+
Возврат Значение;
76+
КонецФункции
77+
78+
Функция КонвертироватьЗначениеПриНеобходимости(Знач ЗначениеНастройки)
79+
ЗначениеНастройки = НРег(ЗначениеНастройки);
80+
Если ЗначениеНастройки = "false" или ЗначениеНастройки = "ложь" Тогда
81+
ЗначениеНастройки = Ложь;
82+
ИначеЕсли ЗначениеНастройки = "true" или ЗначениеНастройки = "истина" Тогда
83+
ЗначениеНастройки = Истина;
84+
ИначеЕсли ЗначениеНастройки = "неопределено" Тогда
85+
ЗначениеНастройки = Неопределено;
86+
КонецЕсли;
87+
Возврат ЗначениеНастройки;
88+
КонецФункции
89+
90+
Функция КлючКонтекста()
91+
Возврат "ТестовыеНастройкиПриложенияОМП";
92+
КонецФункции // КлючКонтекста()

0 commit comments

Comments
 (0)