Skip to main content

crates_docs/cli/
commands.rs

1//! CLI commands definition
2
3use clap::Subcommand;
4use std::path::PathBuf;
5
6/// Available CLI commands
7#[derive(Subcommand)]
8pub enum Commands {
9    /// Start the server
10    Serve {
11        /// Transport mode [stdio, http, sse, hybrid]
12        #[arg(short, long)]
13        mode: Option<String>,
14
15        /// Listen host
16        #[arg(long)]
17        host: Option<String>,
18
19        /// Listen port
20        #[arg(short, long)]
21        port: Option<u16>,
22
23        /// Enable OAuth authentication
24        #[arg(long)]
25        enable_oauth: Option<bool>,
26
27        /// OAuth client ID
28        #[arg(long)]
29        oauth_client_id: Option<String>,
30
31        /// OAuth client secret
32        #[arg(long)]
33        oauth_client_secret: Option<String>,
34
35        /// OAuth redirect URI
36        #[arg(long)]
37        oauth_redirect_uri: Option<String>,
38    },
39
40    /// Generate configuration file
41    Config {
42        /// Output file path
43        #[arg(short, long, default_value = "config.toml")]
44        output: PathBuf,
45
46        /// Overwrite existing file
47        #[arg(short, long)]
48        force: bool,
49    },
50
51    /// Test tool
52    Test {
53        /// Tool to test [`lookup_crate`], [`search_crates`], [`lookup_item`], [`health_check`]
54        #[arg(short, long, default_value = "lookup_crate")]
55        tool: String,
56
57        /// Crate name (for [`lookup_crate`] and [`lookup_item`])
58        #[arg(long)]
59        crate_name: Option<String>,
60
61        /// Item path (for [`lookup_item`])
62        #[arg(long)]
63        item_path: Option<String>,
64
65        /// Search query (for [`search_crates`])
66        #[arg(long)]
67        query: Option<String>,
68
69        /// Version number (optional)
70        #[arg(long)]
71        version: Option<String>,
72
73        /// Result limit (for [`search_crates`])
74        #[arg(long, default_value = "10")]
75        limit: u32,
76
77        /// Output format [`json`], [`markdown`], [`text`]
78        #[arg(long, default_value = "markdown")]
79        format: String,
80    },
81
82    /// Check server health status
83    Health {
84        /// Check type [`all`], [`external`], [`internal`], [`docs_rs`], [`crates_io`]
85        #[arg(short = 't', long, default_value = "all")]
86        check_type: String,
87
88        /// Verbose output
89        #[arg(short, long)]
90        verbose: bool,
91    },
92
93    /// Display version information
94    Version,
95}