Add CLI commands (init, run, test, prompt)
This commit is contained in:
29
src/promptforge/cli/commands/init.py
Normal file
29
src/promptforge/cli/commands/init.py
Normal file
@@ -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()
|
||||
Reference in New Issue
Block a user