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
|
from .languages import language_registry
|
||||||
import json
|
import json
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
from pathlib import Path
|
||||||
import click
|
import click
|
||||||
|
from utils.cli import error, info, success
|
||||||
|
|
||||||
|
|
||||||
@click.group()
|
@click.group()
|
||||||
@@ -9,10 +11,6 @@ def cli():
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def _generate(generator, schema_name, output_dir, make_all):
|
|
||||||
generator.generate(output_dir, schema_file=schema_name, make_all=make_all)
|
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
@click.option("--schema-dir", default="./schema", help="Schema directory")
|
@click.option("--schema-dir", default="./schema", help="Schema directory")
|
||||||
@click.option("--language", required=False, 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)
|
@click.argument("schema", default=None)
|
||||||
def generate(schema, schema_dir, all, output_dir, language: Optional[str] = None):
|
def generate(schema, schema_dir, all, output_dir, language: Optional[str] = None):
|
||||||
if schema is None and not all:
|
if schema is None and not all:
|
||||||
raise ValueError()
|
error("Please pass option --all or argument schema")
|
||||||
|
return
|
||||||
if language:
|
if language:
|
||||||
generator_cls = language_registry.get(language)
|
generator_cls = language_registry.get(language)
|
||||||
if generator_cls is None:
|
if generator_cls is None:
|
||||||
raise ValueError()
|
error("Generator for this language not found!")
|
||||||
|
return
|
||||||
generator = generator_cls(schema_dir)
|
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:
|
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)
|
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__":
|
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