added utils for cli and a change to make folder for each language when --all used

This commit is contained in:
2026-08-15 15:02:37 +03:30
parent 820f794eca
commit eaf6f588b9
2 changed files with 33 additions and 9 deletions
+16 -9
View File
@@ -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__":
+17
View File
@@ -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")