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 /// Search sort order (for [`search_crates`]) [`relevance`], [`downloads`], [`recent-downloads`], [`recent-updates`], [`new`]
70 #[arg(long)]
71 sort: Option<String>,
72
73 /// Version number (optional)
74 #[arg(long)]
75 version: Option<String>,
76
77 /// Result limit (for [`search_crates`])
78 #[arg(long, default_value = "10")]
79 limit: u32,
80
81 /// Output format [`json`], [`markdown`], [`text`]
82 #[arg(long, default_value = "markdown")]
83 format: String,
84 },
85
86 /// Check server health status
87 Health {
88 /// Check type [`all`], [`external`], [`internal`], [`docs_rs`], [`crates_io`]
89 #[arg(short = 't', long, default_value = "all")]
90 check_type: String,
91
92 /// Verbose output
93 #[arg(short, long)]
94 verbose: bool,
95 },
96
97 /// Display version information
98 Version,
99}