Skip to main content

project_map_cli_rust/cli/
commands.rs

1use clap::{Parser, Subcommand};
2
3#[derive(Parser)]
4#[command(name = "project-map")]
5#[command(about = "Agent-Native architectural awareness CLI", long_about = None)]
6pub struct Cli {
7    #[command(subcommand)]
8    pub command: Commands,
9}
10
11#[derive(Subcommand)]
12pub enum Commands {
13    /// Build or refresh the project map index
14    Build {
15        #[arg(short, long, default_value = ".")]
16        root: String,
17        #[arg(short, long, default_value = ".project-map")]
18        out: String,
19    },
20    /// Alias for build
21    Refresh {
22        #[arg(short, long, default_value = ".")]
23        root: String,
24        #[arg(short, long, default_value = ".project-map")]
25        out: String,
26    },
27    /// Find a symbol across the codebase
28    Find {
29        #[arg(short, long)]
30        query: String,
31        #[arg(short, long, default_value = ".project-map")]
32        index: String,
33    },
34    /// Get a dense architectural overview of a specific file
35    Context {
36        #[arg(short, long)]
37        path: String,
38        #[arg(short, long, default_value = ".project-map")]
39        index: String,
40    },
41    /// Analyze the architectural impact of a symbol
42    Impact {
43        #[arg(short, long)]
44        fqn: String,
45        #[arg(short, long, default_value = ".project-map")]
46        index: String,
47    },
48    /// Returns current workspace context and available commands
49    Status {
50        #[arg(short, long, default_value = ".project-map")]
51        index: String,
52    },
53    /// Extract raw code for a specific symbol using AST parsing
54    Fetch {
55        #[arg(short, long)]
56        path: String,
57        #[arg(short, long)]
58        symbol: String,
59        #[arg(short, long, default_value = ".project-map")]
60        index: String,
61    },
62    /// Check the blast radius (dependencies) of a symbol
63    Blast {
64        #[arg(short, long)]
65        path: String,
66        #[arg(short, long)]
67        symbol: String,
68        #[arg(short, long, default_value = ".project-map")]
69        index: String,
70    },
71    /// Semantic keyword search over the codebase index
72    Search {
73        query: String,
74        #[arg(short, long, default_value = ".project-map")]
75        index: String,
76    },
77    /// Start the MCP server
78    Mcp,
79}