Files
7000pctAUTO 539a19b599
Some checks failed
CI / test (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / build (push) Has been cancelled
fix: resolve CI linting issues - remove unused imports and f-strings
2026-01-31 09:34:49 +00:00

120 lines
3.2 KiB
Python

import click
from rich import print as rprint
from rich.panel import Panel
from rich.table import Table
from .config import Config
from . import __version__
@click.group()
@click.version_option(version=__version__, prog_name="cli-memory")
@click.option("--config", "-c", type=click.Path(), help="Path to config file")
@click.option("--verbose", "-v", is_flag=True, help="Enable verbose output")
@click.pass_context
def main(ctx, config, verbose):
ctx.ensure_object(dict)
ctx.obj["config"] = Config(config) if config else Config()
ctx.obj["verbose"] = verbose
if verbose:
click.echo(f"Configuration loaded from: {ctx.obj['config'].config_path}")
@main.command()
def status():
"""Show current status and statistics."""
from .database import Database
from .history import HistoryManager
db = Database()
history = HistoryManager()
stats = history.get_statistics()
table = Table(title="CLI Command Memory Status")
table.add_column("Metric", style="cyan")
table.add_column("Value", style="magenta")
table.add_row("Total Projects", str(stats["total_projects"]))
table.add_row("Total Workflows", str(stats["total_workflows"]))
table.add_row("Total Commands", str(stats["total_commands"]))
table.add_row("Config Path", db.db_path)
rprint(Panel(table, title="Status"))
db.close()
@main.command()
def init():
"""Initialize CLI Command Memory."""
from .database import Database
from .config import Config
config = Config()
config.ensure_directories()
db = Database()
rprint(Panel.fit("[green]CLI Command Memory initialized successfully!", title="Init"))
rprint(f"Database: {db.db_path}")
rprint(f"Config: {config.config_path}")
db.close()
@main.command()
@click.option("--path", "-p", type=click.Path(), help="Project path to detect")
def detect(path):
"""Detect project context at current or specified path."""
from .project import ProjectDetector
detector = ProjectDetector()
project = detector.detect(path)
if project:
table = Table(title="Detected Project")
table.add_column("Property", style="cyan")
table.add_column("Value", style="magenta")
table.add_row("Name", project.name)
table.add_row("Path", project.path)
table.add_row("Git Remote", project.git_remote or "N/A")
table.add_row("Tech Stack", ", ".join(project.tech_stack) if project.tech_stack else "None")
rprint(Panel(table, title="Project Detected"))
else:
rprint("[yellow]No git project detected at specified path")
@main.group()
def shell():
"""Shell integration commands."""
pass
@shell.command()
def setup():
"""Set up shell integration."""
rprint("[green]Shell integration setup complete!")
rprint("Add the following to your shell profile:")
rprint("[cyan]source ~/.cli_memory/shell/cm-prompt.sh[/cyan]")
@main.group()
def autocomplete():
"""Manage autocomplete settings."""
pass
@autocomplete.command()
def enable():
"""Enable autocomplete integration."""
rprint("[green]Autocomplete enabled!")
@autocomplete.command()
def disable():
"""Disable autocomplete integration."""
rprint("[yellow]Autocomplete disabled.")
if __name__ == "__main__":
main()