unity-reference-server 0.1.5

An application and server for resolving references within Unity projects
use std::path::PathBuf;

use clap::{Parser, ValueEnum};
use log::LevelFilter;

#[derive(Parser, Debug)]
#[command(version)]
pub struct CliArgs {
    #[arg()]
    pub folder: PathBuf,

    #[arg(short, long, default_value = "0.0.0.0")]
    pub addr: String,

    #[arg(short, long, default_value = "0")]
    pub port: u16,

    #[arg(long, default_value = "false")]
    pub json_logs: bool,

    /// The verbosity of the logger
    #[cfg(not(debug_assertions))]
    #[arg(value_enum, short, long, default_value_t = LogLevel::Warn)]
    pub verbosity: LogLevel,

    /// The verbosity of the logger
    #[cfg(debug_assertions)]
    #[arg(value_enum, short, long, default_value_t = LogLevel::Info)]
    pub verbosity: LogLevel,
}

#[derive(Debug, Clone, ValueEnum)]
pub(crate) enum LogLevel {
    Error,
    Warn,
    Info,
    Debug,
    #[cfg(debug_assertions)]
    Trace,
}

impl From<LogLevel> for LevelFilter {
    fn from(value: LogLevel) -> Self {
        match value {
            LogLevel::Error => LevelFilter::Error,
            LogLevel::Warn => LevelFilter::Warn,
            LogLevel::Info => LevelFilter::Info,
            LogLevel::Debug => LevelFilter::Debug,

            #[cfg(debug_assertions)]
            LogLevel::Trace => LevelFilter::Trace,
        }
    }
}