Add shellgen UI and safety modules
This commit is contained in:
104
app/shellgen/ui/argparse.py
Normal file
104
app/shellgen/ui/argparse.py
Normal file
@@ -0,0 +1,104 @@
|
||||
"""Argument parser for ShellGen CLI using argparse."""
|
||||
|
||||
import argparse
|
||||
|
||||
|
||||
def create_parser() -> argparse.ArgumentParser:
|
||||
"""Create the argument parser for ShellGen CLI.
|
||||
|
||||
Returns:
|
||||
Configured ArgumentParser instance.
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
prog="shellgen",
|
||||
description="ShellGen - Convert natural language to shell commands using local LLMs",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
epilog="""
|
||||
Examples:
|
||||
shellgen "find all python files in current directory"
|
||||
shellgen "create a new git branch and switch to it"
|
||||
shellgen "list all processes using more than 100MB memory"
|
||||
shellgen --shell zsh "show me the disk usage sorted by size"
|
||||
|
||||
Supported shells: bash, zsh
|
||||
""",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--version",
|
||||
action="version",
|
||||
version="%(prog)s 0.1.0",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--backend",
|
||||
choices=["ollama", "llama_cpp"],
|
||||
help="LLM backend to use (default: ollama)",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"--shell",
|
||||
choices=["bash", "zsh"],
|
||||
help="Target shell for command generation",
|
||||
)
|
||||
|
||||
subparsers = parser.add_subparsers(
|
||||
dest="command",
|
||||
title="commands",
|
||||
description="Available commands",
|
||||
)
|
||||
|
||||
generate_parser = subparsers.add_parser(
|
||||
"generate",
|
||||
help="Generate a shell command from natural language",
|
||||
)
|
||||
generate_parser.add_argument(
|
||||
"description",
|
||||
help="Natural language description of what you want to do",
|
||||
)
|
||||
generate_parser.add_argument(
|
||||
"--execute",
|
||||
action="store_true",
|
||||
help="Execute the generated command",
|
||||
)
|
||||
generate_parser.add_argument(
|
||||
"--auto-execute",
|
||||
action="store_true",
|
||||
help="Automatically execute safe commands without confirmation",
|
||||
)
|
||||
generate_parser.add_argument(
|
||||
"--force",
|
||||
action="store_true",
|
||||
help="Force execution even for potentially dangerous commands",
|
||||
)
|
||||
|
||||
history_parser = subparsers.add_parser(
|
||||
"history",
|
||||
help="Show command generation history",
|
||||
)
|
||||
history_parser.add_argument(
|
||||
"--limit",
|
||||
type=int,
|
||||
default=20,
|
||||
help="Maximum number of entries to show (default: 20)",
|
||||
)
|
||||
|
||||
feedback_parser = subparsers.add_parser(
|
||||
"feedback",
|
||||
help="Submit feedback for a generated command",
|
||||
)
|
||||
feedback_parser.add_argument(
|
||||
"id",
|
||||
type=int,
|
||||
help="ID of the history entry to provide feedback for",
|
||||
)
|
||||
feedback_parser.add_argument(
|
||||
"--corrected",
|
||||
help="The corrected command",
|
||||
)
|
||||
feedback_parser.add_argument(
|
||||
"--feedback",
|
||||
help="Additional feedback or notes",
|
||||
)
|
||||
|
||||
return parser
|
||||
Reference in New Issue
Block a user