fix(db-update): -Dynamic принимает on/off — значение "-" парсер PowerShell не связывает

Документированная форма -Dynamic <+/-> работала наполовину: `-Dynamic "+"` через
powershell.exe -File связывается, а `-Dynamic "-"` парсер не связывает вовсе —
процесс выходит с кодом 2, не напечатав ни строки, и до скрипта управление не
доходит. То есть «отключить динамическое обновление» из навыка было недостижимо,
и притом молча. Склеенная форма из примера SKILL.md (-Dynamic+) — тоже ошибка
разбора. В .py-порте все формы связывались, так что расхождение было ещё и между
портами.

Каноническая форма теперь словесная: -Dynamic on / off. "+"/"-" и yes/no
принимаются для совместимости, но в инструкции не значатся. Значение
нормализуется сразу после разбора, обе ветки (1cv8 -Dynamic+/-, ibcmd
--dynamic=auto/disable) получают прежний вход.

Кейсы dynamic-on / dynamic-off фиксируют, что именно уходит платформе; на прежнем
скрипте dynamic-off падает.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QoAJmoNbgWKobA7JGgN5S3
This commit is contained in:
Nick Shirokov
2026-09-04 19:47:25 +03:00
co-authored by Claude Opus 5
parent a0f2c4988a
commit 057c1044d9
5 changed files with 57 additions and 16 deletions
@@ -1,4 +1,4 @@
# db-update v1.19 — Update 1C database configuration
# db-update v1.20 — Update 1C database configuration
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
# NB: *nix-раскладку платформы (/opt/1cv8/<ver>/1cv8, без .exe) знает только .py-порт — PS на *nix не исполняется.
<#
@@ -34,7 +34,7 @@
Обновить все расширения
.PARAMETER Dynamic
Динамическое обновление: "+" включить, "-" отключить
Динамическое обновление: on включить, off отключить
.PARAMETER Server
Обновление на стороне сервера
@@ -81,8 +81,10 @@ param(
[Parameter(Mandatory=$false)]
[switch]$AllExtensions,
# on/off, а не +/-: значение "-" через powershell.exe -File парсер не связывает и молча
# выходит с кодом 2, без единого сообщения. "+"/"-" принимаются, но в инструкции не значатся.
[Parameter(Mandatory=$false)]
[ValidateSet("+", "-")]
[ValidateSet("on", "off", "yes", "no", "+", "-")]
[string]$Dynamic,
[Parameter(Mandatory=$false)]
@@ -113,6 +115,8 @@ param(
[string[]]$AdditionalIbcmdArguments = @()
)
if ($Dynamic) { $Dynamic = if (@('on', 'yes', '+') -contains $Dynamic.ToLower()) { '+' } else { '-' } }
$OutputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# db-update v1.19 — Update 1C database configuration
# db-update v1.20 — Update 1C database configuration
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -544,7 +544,9 @@ def main():
parser.add_argument("-RepositoryPassword", default="")
parser.add_argument("-Extension", default="")
parser.add_argument("-AllExtensions", action="store_true")
parser.add_argument("-Dynamic", default="", choices=["", "+", "-"])
# on/off, а не +/-: значение "-" через powershell.exe -File парсер PS не связывает и молча
# выходит с кодом 2. "+"/"-" принимаются, но в инструкции не значатся.
parser.add_argument("-Dynamic", default="", choices=["", "on", "off", "yes", "no", "+", "-"])
parser.add_argument("-Server", action="store_true")
parser.add_argument("-WarningsAsErrors", action="store_true")
# Ключ для регрессов и верификации снапшотов, не для повседневного вызова: в SKILL.md
@@ -559,6 +561,9 @@ def main():
argv, v8_extra, ibcmd_extra = extract_extra_args(sys.argv[1:], known_opts)
args = ci_parse_args(parser, argv)
if args.Dynamic:
args.Dynamic = "+" if args.Dynamic.lower() in ("on", "yes", "+") else "-"
args.V8Path = clean_path(args.V8Path, "-V8Path")
args.InfoBasePath = clean_path(args.InfoBasePath, "-InfoBasePath")
assert_infobase_exists(args.InfoBasePath)