Файл настроек (autumn-properties.json)
Значения опций и аргументов команд можно задавать в файле autumn-properties.json в рабочем каталоге, из которого запускается vrunner (как правило, корень проекта). Всё, что в нём задано, подставляется в незаполненные опции команды.
Формат файла
Ключи лежат в секции vrunner. Ключ - имя опции из справки команды без -- (src, db-user, ibcmd); позиционный аргумент (OUT, SRC, IN, TESTSPATH) - его имя в нижнем регистре. Значения можно задавать для всех команд сразу, для группы или для конкретной команды:
{
"vrunner": {
"<опция>": "<значение>",
"<группа>": {
"<опция>": "<значение>",
"<подкоманда>": {
"<опция>": "<значение>"
}
}
}
}Поиск идёт от команды к корню: для vrunner cf compile --src проверяются vrunner.cf.compile.src, затем vrunner.cf.src, затем vrunner.src. Флаги задаются как true/false, повторяемые опции (--report-format) - массивом.
Схема для редактора
К каждому релизу прилагается JSON Schema файла настроек vrunner-settings-schema.json: она строится по опциям команд и знает все ключи, их типы и допустимые значения. Ключ $schema включает подсказки и проверку в редакторе:
{
"$schema": "https://github.com/vanessa-opensource/vanessa-runner/releases/latest/download/vrunner-settings-schema.json",
"vrunner": {
"ibconnection": "/F./build/ib"
}
}Приоритеты
От высшего к низшему:
- Аргументы и опции командной строки.
- Переменные окружения опций (
VRUNNER_*). - Файл из опции
settings(см. ниже). autumn-properties.jsonв рабочем каталоге.- Значения по умолчанию из пакета vanessa-runner.
Настройки из файлов заполняют только те опции, которые не заданы в командной строке и переменных окружения.
Опция settings
settings - глобальная опция, доступная всем командам. Задаётся в командной строке (--settings <файл> или --settings=<файл>), переменной окружения VRUNNER_SETTINGS или ключом settings на верхнем уровне секции vrunner (внутри групп и команд ключ не действует). Значение - путь к ещё одному файлу с теми же ключами; он накладывается поверх autumn-properties.json рабочего каталога. Формат определяется по расширению: .json или .yaml (.yml). Относительный путь считается от рабочего каталога.
Файл, заданный в командной строке или переменной окружения, обязан существовать: иначе команда завершается ошибкой Файл настроек не найден. Файл из ключа settings необязателен: если его нет, действуют настройки проекта. Ключ settings внутри самого дополнительного файла не обрабатывается.
Локальные настройки разработчика
Проектный autumn-properties.json лежит в репозитории и одинаков у всех, а строка подключения, версия платформы, пути к EDT и Vanessa у каждого разработчика свои. Проектный файл ключом settings указывает на локальный файл, который в репозиторий не попадает:
{
"vrunner": {
"settings": "autumn-properties.local.json",
"v8version": "8.3.24",
"cf": {
"compile": {
"src": "./src",
"out": "./build/1Cv8.cf"
}
}
}
}Локальный файл содержит только личные значения:
{
"vrunner": {
"ibconnection": "/FD:/bases/MyProject",
"v8version": "8.3.25"
}
}vrunner cf compile у всех разработчиков и в CI запускается одинаково: src и out берутся из проектного файла, ibconnection и v8version - из локального; там, где локального файла нет, действуют проектные значения. Добавьте локальный файл в .gitignore:
autumn-properties.local.jsonПримеры
Подключение и платформа для всех команд
{
"vrunner": {
"ibconnection": "/FD:/bases/MyProject",
"db-user": "Администратор",
"db-pwd": "",
"v8version": "8.3.24"
}
}Настройки группы и команды
{
"vrunner": {
"ibconnection": "/F./build/ib",
"cf": {
"compile": {
"src": "./src"
}
},
"repo": {
"storage-name": "D:/repos/MyProject",
"storage-user": "StorageUser"
}
}
}storage-name и storage-user действуют для всех команд repo.
Обязательные аргументы и опции
Обязательные позиционные аргументы и опции, например extension-name у cfe decompile, тоже задаются в файле настроек. Если значение не задано ни в командной строке, ни в переменной окружения, ни в файле, команда завершается ошибкой и подсказывает ключ настройки.
{
"vrunner": {
"cf": {
"compile": {
"out": "./build/1Cv8.cf"
}
},
"test": {
"xunit": {
"testspath": "./tests"
}
}
}
}С таким файлом vrunner cf compile и vrunner test xunit запускаются без аргументов.
CI
{
"vrunner": {
"v8version": "8.3.24",
"ibcmd": true,
"test": {
"xunit": {
"testspath": "./tests",
"report-format": ["junit"],
"report-path": "./build/reports/junit.xml"
}
}
}
}Логирование
Потоки вывода
По умолчанию лог (ИНФОРМАЦИЯ - ..., ОШИБКА - ...) и данные команд идут в stdout. Ключ log-output со значением stderr переводит лог в stderr; в stdout остаются только данные команд (JSON, таблицы, списки), и их можно разбирать, не вычищая строки лога:
{
"vrunner": {
"log-output": "stderr"
}
}vrunner infobase extensions list --json --ibconnection /F./ib | jq '.[].имя'Значения: stdout (по умолчанию) и stderr. Для разового запуска ключ задаётся переменной окружения VRUNNER_LOG_OUTPUT; она сильнее файла настроек.
При stderr в терминале оба потока видны вместе, а при перенаправлении vrunner ... > out.txt в файл попадают только данные. Чтобы сохранить и лог, перенаправьте оба потока: vrunner ... > out.txt 2>&1.
Уровни
Уровень логирования задаётся в секции logos того же файла:
{
"logos": {
"logger": {
"vrunner": "DEBUG"
}
}
}Доступные уровни: DEBUG, INFO, WARN, ERROR. В отладочном логе видно, какой файл настроек применён и откуда взято значение каждой опции.
