From 92963a1321aa90b2912d32bda23d927f2dda2e36 Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Thu, 29 Jan 2026 10:47:59 +0000 Subject: [PATCH] Initial commit: ConfigForge v1.0.0 --- configforge/cli.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 configforge/cli.py diff --git a/configforge/cli.py b/configforge/cli.py new file mode 100644 index 0000000..27df772 --- /dev/null +++ b/configforge/cli.py @@ -0,0 +1,54 @@ +"""Main CLI interface for ConfigForge.""" + +import sys + +import click + +from configforge import __version__ +from configforge.commands import validate, convert, generate, schema + + +def print_version(ctx: click.Context, param: click.Parameter, value: bool) -> None: + """Callback to print version and exit.""" + if not value or ctx.resilient_parsing: + return + + click.echo(f"ConfigForge v{__version__}") + sys.exit(0) + + +@click.group() +@click.option( + "--version", + is_flag=True, + callback=print_version, + expose_value=False, + help="Show version and exit", +) +@click.option( + "--verbose", + "-v", + is_flag=True, + default=False, + help="Enable verbose output", +) +@click.option( + "--quiet", + "-q", + is_flag=True, + default=False, + help="Suppress all output except errors", +) +def main(verbose: bool, quiet: bool) -> None: + """ConfigForge - A CLI tool for validating, converting, and generating schemas for configuration files.""" + pass + + +main.add_command(validate, "validate") +main.add_command(convert, "convert") +main.add_command(generate, "generate") +main.add_command(schema, "schema") + + +if __name__ == "__main__": + main()