# Optional shared CLI transport; architectural clients also work through the Python API.
import argparse
from pathlib import Path

from .build import generate

DEFAULT_SEED = 20260925


def run(design, *, default_seed=DEFAULT_SEED):
    """Generate, validate, export and semantically verify a declared property."""
    parser = argparse.ArgumentParser(description=design.name)
    parser.add_argument('--seed', type=int, default=default_seed)
    parser.add_argument('--output', type=Path, default=Path('output.litematic'))
    args = parser.parse_args()
    building = generate(design, args.seed)
    building.export(args.output)
    print(f'wrote {args.output}: {building.verify(args.output)}; validation passed')
