From 3caa23e692a435d594e90a5a72f06d814f8bf24c Mon Sep 17 00:00:00 2001 From: 7000pctAUTO Date: Wed, 4 Feb 2026 12:30:05 +0000 Subject: [PATCH] Add CLI commands (init, run, test, prompt) --- src/promptforge/cli/commands/init.py | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/promptforge/cli/commands/init.py diff --git a/src/promptforge/cli/commands/init.py b/src/promptforge/cli/commands/init.py new file mode 100644 index 0000000..d01e33c --- /dev/null +++ b/src/promptforge/cli/commands/init.py @@ -0,0 +1,29 @@ +import click +from pathlib import Path +from promptforge.core.git_manager import GitManager + + +@click.command() +@click.argument("directory", type=click.Path(exists=False), default=".") +@click.option("--force", is_flag=True, help="Force reinitialization") +@click.pass_obj +def init(ctx, directory: str, force: bool): + """Initialize a new PromptForge repository.""" + prompts_dir = Path(directory) / "prompts" + git_manager = GitManager(prompts_dir) + + if prompts_dir.exists() and not force: + if (prompts_dir / ".git").exists(): + click.echo(f"PromptForge already initialized in {prompts_dir}") + return + + try: + git_manager.init() + config_file = Path(directory) / "configs" / "promptforge.yaml" + if not config_file.exists(): + config_file.parent.mkdir(parents=True, exist_ok=True) + config_file.touch() + click.echo(f"Initialized PromptForge in {prompts_dir}") + except Exception as e: + click.echo(f"Error: {e}", err=True) + raise click.Abort() \ No newline at end of file