mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-08-31 23:40:51 +03:00
fix(db-*): на POSIX снимать и кавычки склеенных ключей
Проверка прямым вызовом платформы на darwin: /ConfigurationRepositoryF"путь с пробелом" отвергается, тот же ключ без кавычек проходит. Значит на POSIX лишние и обрамляющие кавычки значений, и кавычки внутри склеенных ключей — они нужны только для склейки команды на Windows. File="…" не трогаем: там кавычки часть синтаксиса строки соединения, и с ними на POSIX всё работает (проверено db-create). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
b7837c86ce
commit
84e908304e
@@ -342,10 +342,21 @@ def run_v8(v8path, arguments):
|
||||
if os.name == "nt":
|
||||
cmd = '"' + v8path + '" ' + " ".join(arguments)
|
||||
else:
|
||||
cmd = [v8path] + [
|
||||
a[1:-1] if len(a) > 1 and a[0] == '"' and a[-1] == '"' else a
|
||||
for a in arguments
|
||||
]
|
||||
def strip_framing_quotes(a):
|
||||
# Кавычки, которыми мы обрамляем значения ради склейки на Windows, на POSIX
|
||||
# становятся ЧАСТЬЮ значения. Проверено на darwin: путь с пробелом отдельным
|
||||
# токеном даёт «Неопределена информационная база», а склеенный
|
||||
# /ConfigurationRepositoryF"путь с пробелом" — «завершилось с ошибкой»;
|
||||
# без кавычек обе формы работают.
|
||||
if len(a) > 1 and a[0] == '"' and a[-1] == '"':
|
||||
return a[1:-1] # "значение" отдельным токеном
|
||||
if a[0:1] == "/" and a[-1:] == '"' and '"' in a[:-1]:
|
||||
i = a.index('"')
|
||||
return a[:i] + a[i + 1:-1] # /N"имя" -> /Nимя
|
||||
return a # File="…" не трогаем: там кавычки —
|
||||
# часть синтаксиса строки соединения,
|
||||
# и с ними на POSIX всё работает
|
||||
cmd = [v8path] + [strip_framing_quotes(a) for a in arguments]
|
||||
r = subprocess.run(cmd, input=b"", capture_output=True)
|
||||
r.stdout = decode_platform_bytes(r.stdout)
|
||||
r.stderr = decode_platform_bytes(r.stderr)
|
||||
|
||||
Reference in New Issue
Block a user