added utils for cli and a change to make folder for each language when --all used
This commit is contained in:
+16
-9
@@ -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__":
|
||||
|
||||
@@ -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")
|
||||
Reference in New Issue
Block a user