blues-lsp 0.1.3

LSP language server for the Bluespec SystemVerilog language
Documentation
use std::net::SocketAddr;

use clap::ValueEnum;

/// Bluespec HDL language server
#[derive(clap::Parser)]
#[command(version, about)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Command,
}

#[derive(clap::Subcommand)]
pub enum Command {
    /// Start LSP server
    // TODO: JSONRPC medium settings
    #[command(name = "lsp")]
    Server(ServerArgs),
}

#[derive(clap::Args)]
pub struct ServerArgs {
    #[arg(short, long, value_name = "ip:port")]
    /// Listen on TCP port
    pub listen: Option<SocketAddr>,
    #[arg(long, value_name = "output")]
    /// Write log messages to console
    pub log: Option<LogOutput>,
    #[arg(short, long, value_name = "level", default_value_t = 3)]
    /// Log output verbosity (--log only)
    pub verbosity: u8,
}

#[derive(ValueEnum, Clone)]
pub enum LogOutput {
    Stdout,
    Stderr,
}