1use std::net::SocketAddr;
2
3use clap::ValueEnum;
4
5#[derive(clap::Parser)]
7#[command(version, about)]
8pub struct Cli {
9 #[command(subcommand)]
10 pub command: Command,
11}
12
13#[derive(clap::Subcommand)]
14pub enum Command {
15 #[command(name = "lsp")]
18 Server(ServerArgs),
19}
20
21#[derive(clap::Args)]
22pub struct ServerArgs {
23 #[arg(short, long, value_name = "ip:port")]
24 pub listen: Option<SocketAddr>,
26 #[arg(long, value_name = "output")]
27 pub log: Option<LogOutput>,
29 #[arg(short, long, value_name = "level", default_value_t = 3)]
30 pub verbosity: u8,
32}
33
34#[derive(ValueEnum, Clone)]
35pub enum LogOutput {
36 Stdout,
37 Stderr,
38}