diff --git a/src/generator/main.py b/src/generator/main.py index cd2557f..18c214f 100644 --- a/src/generator/main.py +++ b/src/generator/main.py @@ -1,7 +1,9 @@ from .languages import language_registry import json from typing import Any, Optional +from pathlib import Path import click +from utils.cli import error, info, success @click.group() @@ -9,10 +11,6 @@ def cli(): pass -def _generate(generator, schema_name, output_dir, make_all): - generator.generate(output_dir, schema_file=schema_name, make_all=make_all) - - @cli.command() @click.option("--schema-dir", default="./schema", help="Schema directory") @click.option("--language", required=False, help="Schema directory") @@ -21,17 +19,26 @@ def _generate(generator, schema_name, output_dir, make_all): @click.argument("schema", default=None) def generate(schema, schema_dir, all, output_dir, language: Optional[str] = None): if schema is None and not all: - raise ValueError() + error("Please pass option --all or argument schema") + return if language: generator_cls = language_registry.get(language) if generator_cls is None: - raise ValueError() + error("Generator for this language not found!") + return generator = generator_cls(schema_dir) - _generate(generator, schema, output_dir, make_all=all) + generator.generate(output_dir, schema_file=schema, make_all=all) + info(f"{'Types' if all else 'Type'} for language {language_name} generated.") else: - for generator_cls in language_registry.values(): + for language_name, generator_cls in language_registry.items(): + output_path = Path(output_dir) / language_name generator = generator_cls(schema_dir) - _generate(generator, schema, output_dir, make_all=all) + generator.generate(output_path, schema_file=schema, make_all=all) + info( + f"{'Types' if all else 'Type'} for language {language_name} generated." + ) + + success(f"{'Types' if all else 'Type'} generated.") if __name__ == "__main__": diff --git a/src/utils/cli.py b/src/utils/cli.py new file mode 100644 index 0000000..afcda91 --- /dev/null +++ b/src/utils/cli.py @@ -0,0 +1,17 @@ +import click + + +def error(message): + click.secho(message, err=True, fg="red") + + +def success(message): + click.secho(message, fg="green") + + +def warning(message): + click.secho(message, fg="orange") + + +def info(message): + click.secho(message, fg="cyan")