mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-09-01 16:00:51 +03:00
fix(skills): «файл не найден» на входном JSON — одинаково во всех навыках
Часть навыков проверяла путь ко входному JSON сама и отвечала внятной строкой, часть — нет и роняла дамп: FileNotFoundError с traceback в py, MethodInvocationException с CategoryInfo в PS1. Один и тот же промах давал разный ответ в зависимости от навыка, а у form-edit — ещё и от порта. Проверка перенесена в тело семьи read_json_file / Read-JsonInputFile: пол одинаков везде по построению, и новые навыки получают его вместе с функцией. Навыки со своей проверкой срабатывают раньше и сохраняют прежний текст, поэтому существующие кейсы не двигаются. Заодно каталог вместо файла: раньше IsADirectoryError / отказ доступа, теперь «Expected a JSON file, got a directory». Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
229e66b907
commit
77ee8f1047
@@ -1,4 +1,4 @@
|
||||
# cf-edit v1.21 — Edit 1C configuration root (Configuration.xml)
|
||||
# cf-edit v1.22 — Edit 1C configuration root (Configuration.xml)
|
||||
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
|
||||
param(
|
||||
[Parameter(Mandatory)][Alias('Path')][string]$ConfigPath,
|
||||
@@ -45,6 +45,17 @@ function ConvertFrom-JsonInput([string]$text, [string]$source, [string]$expected
|
||||
# разбирается успешно, и в конфигурацию уезжает имя из «замен». Кодовую страницу не подбираем:
|
||||
# угаданное имя уйдёт в метаданные так же молча.
|
||||
function Read-JsonInputFile([string]$path) {
|
||||
# Проверка здесь, а не по навыкам: часть навыков проверяла путь сама, часть — нет, и один и тот
|
||||
# же промах давал то внятную строку, то дамп MethodInvocationException. Навыки со своей
|
||||
# проверкой срабатывают раньше и сохраняют свой текст.
|
||||
if (-not (Test-Path -LiteralPath $path)) {
|
||||
[Console]::Error.WriteLine("[ERROR] File not found: $path")
|
||||
exit 1
|
||||
}
|
||||
if (Test-Path -LiteralPath $path -PathType Container) {
|
||||
[Console]::Error.WriteLine("[ERROR] Expected a JSON file, got a directory: $path")
|
||||
exit 1
|
||||
}
|
||||
$bytes = [System.IO.File]::ReadAllBytes($path)
|
||||
if ($bytes.Length -ge 3 -and $bytes[0] -eq 0xEF -and $bytes[1] -eq 0xBB -and $bytes[2] -eq 0xBF) {
|
||||
return [System.Text.Encoding]::UTF8.GetString($bytes, 3, $bytes.Length - 3)
|
||||
|
||||
Reference in New Issue
Block a user