mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-31 16:57:46 +03:00
feat(db-*,epf-*): передача дополнительных аргументов в 1cv8 и ibcmd
Набор аргументов платформы был закрыт: общий ключ запуска (например /UseHwLicenses+ на машине с аппаратной лицензией) передать было нельзя, и сборка на автоматически созданной временной базе падала с «Не найдена лицензия». Добавлен escape hatch — по параметру на движок, плюс зеркальные ключи в .v8-project.json (v8args / ibcmdargs) для машинно-специфичных флагов: - -AdditionalV8Arguments → 1cv8.exe, ключи вида /Key - -AdditionalIbcmdArguments → ibcmd, ключи вида --key=value Аргументы уходят во все запуски платформы, которые делает навык: epf-build без базы прогоняет CREATEINFOBASE, /LoadConfigFromFiles, /UpdateDBCfg и саму сборку — ключ получает каждый. До запуска отклоняются: аргумент, которым управляет сам скрипт (режим, подключение, /Out, пакетная операция), позиционный токен для ibcmd и параметр «не своего» движка. Значения секрето-опасных ключей (/P, /UC, --password, --token) в логе маскируются. Порядок источников: .v8-project.json, затем параметр. Поведение без новых параметров не меняется. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
d0e81a1715
commit
efee7f8f2b
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "Отказ: доп. аргумент /F конфликтует со скрипт-контролируемым ключом",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\nexit /b 0\r\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib",
|
||||
"-AdditionalV8Arguments", "/F", "C:\\tmp"],
|
||||
"expectError": true,
|
||||
"noSnapshot": "негативный кейс: платформа не запускается"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "Отказ: -AdditionalV8Arguments при выбранном движке ibcmd",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "ibcmd.cmd", "content": "@echo off\r\nexit /b 0\r\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\ibcmd.cmd", "-InfoBasePath", "{workDir}\\ib",
|
||||
"-AdditionalV8Arguments", "/UseHwLicenses+"],
|
||||
"expectError": true,
|
||||
"noSnapshot": "негативный кейс: платформа не запускается"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Доп. аргументы берутся из v8args в .v8-project.json (fake platform)",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } },
|
||||
{ "writeFile": { "path": ".v8-project.json", "content": "{\n \"v8path\": \"fake\",\n \"v8args\": [\"/UseHwLicenses+\"],\n \"ibcmdargs\": [\"--verbose\"]\n}\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib"],
|
||||
"expect": { "stdoutContains": "/DisableStartupDialogs /UseHwLicenses+" },
|
||||
"expectError": true,
|
||||
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "Доп. аргументы ibcmd доходят до платформы, секрет замаскирован (fake platform)",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "ibcmd.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\ibcmd.cmd", "-InfoBasePath", "{workDir}\\ib",
|
||||
"-AdditionalIbcmdArguments", "--verbose", "--token=topsecret"],
|
||||
"expect": {
|
||||
"stdoutContains": ["ARGS: infobase create", "--verbose --token=topsecret", "--token=***"]
|
||||
},
|
||||
"expectError": true,
|
||||
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "Отказ: позиционный токен в -AdditionalIbcmdArguments ломает команду ibcmd",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "ibcmd.cmd", "content": "@echo off\r\nexit /b 0\r\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\ibcmd.cmd", "-InfoBasePath", "{workDir}\\ib",
|
||||
"-AdditionalIbcmdArguments", "config"],
|
||||
"expectError": true,
|
||||
"noSnapshot": "негативный кейс: платформа не запускается"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Доп. аргументы 1cv8 доходят до платформы (fake platform)",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib",
|
||||
"-AdditionalV8Arguments", "/UseHwLicenses+"],
|
||||
"expect": { "stdoutContains": ["ARGS: CREATEINFOBASE", "/DisableStartupDialogs /UseHwLicenses+"] },
|
||||
"expectError": true,
|
||||
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет"
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Доп. аргументы доходят до 1cv8 при строковой склейке (fake platform)",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 1\r\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\fake.cmd", "-InfoBasePath", "{workDir}\\ib",
|
||||
"-AdditionalV8Arguments", "/ClearCache", "/UseHwLicenses+"],
|
||||
"expect": { "stdoutContains": "/DisableStartupDialogs /ClearCache /UseHwLicenses+" },
|
||||
"expectError": true,
|
||||
"noSnapshot": "проверяется командная строка в stdout, файлов на выходе нет"
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"name": "Доп. аргументы уходят и во временную базу, и в сборку (fake platform)",
|
||||
"preRun": [
|
||||
{ "writeFile": { "path": "fake.cmd", "content": "@echo off\r\necho ARGS: %*\r\nexit /b 0\r\n" } },
|
||||
{ "writeFile": { "path": "src/Обработка.xml", "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<MetaDataObject xmlns=\"http://v8.1c.ru/8.3/MDClasses\"/>\n" } }
|
||||
],
|
||||
"args_extra": ["-V8Path", "{workDir}\\fake.cmd",
|
||||
"-SourceFile", "{workDir}\\src\\Обработка.xml",
|
||||
"-OutputFile", "{workDir}\\build\\Обработка.epf",
|
||||
"-AdditionalV8Arguments", "/UseHwLicenses+"],
|
||||
"runtimeOnly": "powershell",
|
||||
"expect": {
|
||||
"stdoutContains": [
|
||||
"ARGS: CREATEINFOBASE",
|
||||
"/DisableStartupDialogs /UseHwLicenses+",
|
||||
"ARGS: DESIGNER",
|
||||
"/LoadExternalDataProcessorOrReportFromFiles"
|
||||
]
|
||||
},
|
||||
"expectError": true,
|
||||
"noSnapshot": "проверяются командные строки в stdout, платформа фейковая — EPF не создаётся"
|
||||
}
|
||||
Reference in New Issue
Block a user