1
0
mirror of https://github.com/240596448/onec_codetemplate_parser.git synced 2025-11-23 21:34:39 +02:00

Валидация параметров cli

This commit is contained in:
Vladimir Nadulich
2025-10-31 22:08:18 +03:00
parent febdeb11d1
commit 39b7fac84d

View File

@@ -1,15 +1,32 @@
"""Консольное приложение для вызова API библиотеки """
import typer
from pathlib import Path
from .api import parse_to_src, render_from_src
app = typer.Typer(
help="Парсер шаблонов кода 1С.\n\n"
"Позволяет разбирать шаблоны *.st в исходники src и обратно.")
def validate_file_enable(value: str):
path = Path(value)
if not path.is_file():
raise typer.BadParameter(f"Файл отсутствует '{value}'")
elif path.stat().st_size <=3:
raise typer.BadParameter(f"Файл пустой '{value}'")
return path
def validate_empty_dir(value: str):
path = Path(value)
if not path.is_dir() or not any(path.iterdir()):
raise typer.BadParameter(f"Папка '{value}' не существует или пуста.")
return path
@app.command(help="Разобрать шаблон из 1С-файла *.st в исходники src")
def parse(
path: str = typer.Argument(..., help="Путь к исходному 1С-файлу шаблона *.st", ),
path: str = typer.Argument(...,
callback=validate_file_enable,
help="Путь к исходному 1С-файлу шаблона *.st", ),
src: str = typer.Argument('./src', help="Папка, в которую будут сохранены исходники src")
):
"""
@@ -24,8 +41,8 @@ def parse(
@app.command(help="Собрать шаблон из исходников src в 1С-файл *.st")
def render(
src: str = typer.Argument('./src', help="Папка с исходниками src для сборки шаблона"),
path: str = typer.Argument(..., help="Путь, куда будет записан собранный 1С-файл *.st")
path: str = typer.Argument(..., help="Путь, куда будет записан собранный 1С-файл *.st"),
src: str = typer.Argument('./src', callback=validate_empty_dir, help="Папка с исходниками src для сборки шаблона")
):
"""
Собирает 1С-шаблон (*.st) из исходников.