Generating a CLIΒΆ
An example command-line interface script, using PyYAML and clize:
#!/usr/bin/env python3
import json
from pathlib import Path
import artisan, clize, yaml
from .my_lib import my_context
def build(spec_dict_path: Path, key: str) -> None:
'Build an artifact based on a spec in a YAML file.'
spec_dict = yaml.safe_load(spec_dict_path.read_bytes())
artifact = artisan.build(artisan.Artifact, spec_dict[key])
print(f'Built {Path(artifact)}.')
def write_schema(dst: Path) -> None:
'Generate a JSON Schema describing valid inputs to `build`.'
schema = artisan.get_spec_dict_schema()
dst.write_text(json.dumps(schema, indent=2))
print(f'Wrote a schema to {dst}.')
with artisan.using_context(my_context):
clize.run(build, write_schema)