from __future__ import annotations

import argparse
import logging

from src.config.naming_config import load_naming_config
from src.naming.naming import build_filename
from src.logging_setup import log_event

logger = logging.getLogger(__name__)


def register(sub: argparse._SubParsersAction) -> None:
    naming = sub.add_parser("naming", help="SEO naming + privacy rules.")
    naming_sub = naming.add_subparsers(dest="naming_cmd", required=True)

    preview = naming_sub.add_parser("preview", help="Preview a generated filename slug.")
    preview.add_argument("--place", required=True, help="Required place name.")
    preview.add_argument("--venue", help="Optional venue name.")
    preview.add_argument("--event", help="Optional event title.")
    preview.set_defaults(_handler=_run_preview)


def _run_preview(args: argparse.Namespace) -> int:
    log_event(logger, "command.start", command="naming.preview")
    cfg = load_naming_config()
    preview = build_filename(place=args.place, venue=args.venue, event=args.event, config=cfg)
    print(preview.to_json())
    log_event(logger, "command.complete", command="naming.preview")
    return 0
