feat(hooks): add git hooks management CLI

This commit is contained in:
sankalp committed 2025-08-25 14:17:12 +05:45
1 parent b09b5f676e
commit 0036e47968
24 files changed
+1221 -531

No files matched your search

+22 -13
View File
@@ -1,6 +1,7 @@
"""
Gitignore generation CLI.
"""
import os
import click
from rich.console import Console
@@ -11,11 +12,13 @@ from .detector import ProjectDetector
console = Console()
@click.group()
def cli():
"""Generate .gitignore files."""
pass
@cli.command()
@click.option("--directory", "-d", default=".", help="Directory to scan")
@click.option("--output", "-o", default=".gitignore", help="Output file path")
@@ -24,33 +27,38 @@ def auto(directory: str, output: str):
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
console=console
console=console,
) as progress:
# Initialize services
progress.add_task("Initializing...", total=None)
detector = ProjectDetector(directory)
generator = GitignoreGenerator()
# Detect project types
progress.add_task("Detecting project types...", total=None)
detected_types = detector.detect_project_types()
if not detected_types:
console.print("[yellow]No project types detected. Using generic .gitignore.")
console.print(
"[yellow]No project types detected. Using generic .gitignore."
)
else:
console.print(f"\n[green]Detected project types:[/] {', '.join(detected_types)}")
console.print(
f"\n[green]Detected project types:[/] {', '.join(detected_types)}"
)
# Check if output file exists
if os.path.exists(output):
if not Confirm.ask(f"\n[yellow]File {output} already exists. Overwrite?"):
return
# Generate .gitignore
progress.add_task("Generating .gitignore...", total=None)
generator.update_gitignore_file(detected_types, output)
console.print(f"\n[green]Generated .gitignore at {output}")
@cli.command()
@click.argument("types", nargs=-1, required=True)
@click.option("--output", "-o", default=".gitignore", help="Output file path")
@@ -59,26 +67,27 @@ def generate(types: tuple, output: str):
with Progress(
SpinnerColumn(),
TextColumn("[progress.description]{task.description}"),
console=console
console=console,
) as progress:
# Initialize services
progress.add_task("Initializing...", total=None)
generator = GitignoreGenerator()
# Check if output file exists
if os.path.exists(output):
if not Confirm.ask(f"\n[yellow]File {output} already exists. Overwrite?"):
return
# Generate .gitignore
progress.add_task("Generating .gitignore...", total=None)
generator.update_gitignore_file(list(types), output)
console.print(f"\n[green]Generated .gitignore at {output}")
# Add command aliases
cli.add_command(auto, name="a")
cli.add_command(generate, name="g")
if __name__ == "__main__":
cli()
cli()