fix(meta-edit): внешнюю обработку/отчёт проверять epf-validate (#108)

Автопроверка после правки жёстко звала meta-validate, который
ExternalDataProcessor/ExternalReport не знает: корректная правка
заканчивалась «Unrecognized metadata type». Валидатор теперь выбирается
по типу объекта. В py-порту stdout сбрасывается перед запуском
валидатора — его вывод больше не обгоняет строки meta-edit.

verify-snapshots: кейс meta-edit с setup none собирается epf-build,
а не грузится пустой конфигурацией, где обработку платформа не видит.

Fixes #108

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Nick Shirokov
2026-09-26 14:59:54 +03:00
co-authored by Claude Opus 5.5
parent 68a2a11a6c
commit 372510bbc4
10 changed files with 421 additions and 11 deletions
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
# meta-edit v1.53 — Edit existing 1C metadata object XML
# meta-edit v1.54 — Edit existing 1C metadata object XML
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
import argparse
@@ -3985,16 +3985,20 @@ def main():
# --- Auto-validate ---
if not args.NoValidate:
# Внешняя обработка/отчёт — автономный объект, meta-validate его не знает (#108).
validate_skill = "epf-validate" if obj_type in ("ExternalDataProcessor", "ExternalReport") else "meta-validate"
script_dir = os.path.dirname(os.path.abspath(__file__))
validate_script = os.path.normpath(os.path.join(script_dir, "..", "..", "meta-validate", "scripts", "meta-validate.py"))
validate_script = os.path.normpath(os.path.join(script_dir, "..", "..", validate_skill, "scripts", f"{validate_skill}.py"))
if os.path.exists(validate_script):
print()
print("--- Running meta-validate ---")
print(f"--- Running {validate_skill} ---")
python_exe = sys.executable
# Буфер stdout сбросить до запуска: иначе вывод дочернего процесса обгоняет наш.
sys.stdout.flush()
subprocess.run([python_exe, validate_script, "-ObjectPath", resolved_path])
else:
print()
print(f"[SKIP] meta-validate not found at: {validate_script}")
print(f"[SKIP] {validate_skill} not found at: {validate_script}")
# --- Summary ---
print()