Skip to main content

blues_lsp/
cli.rs

1use std::net::SocketAddr;
2
3use clap::ValueEnum;
4
5/// Bluespec HDL language server
6#[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    /// Start LSP server
16    // TODO: JSONRPC medium settings
17    #[command(name = "lsp")]
18    Server(ServerArgs),
19}
20
21#[derive(clap::Args)]
22pub struct ServerArgs {
23    #[arg(short, long, value_name = "ip:port")]
24    /// Listen on TCP port
25    pub listen: Option<SocketAddr>,
26    #[arg(long, value_name = "output")]
27    /// Write log messages to console
28    pub log: Option<LogOutput>,
29    #[arg(short, long, value_name = "level", default_value_t = 3)]
30    /// Log output verbosity (--log only)
31    pub verbosity: u8,
32}
33
34#[derive(ValueEnum, Clone)]
35pub enum LogOutput {
36    Stdout,
37    Stderr,
38}