pub mod init;
pub mod run;

use clap::{Parser, Subcommand};

#[derive(Parser, Clone)]
#[command(name = "refractium", version, about)]
pub struct Cli {
    #[command(subcommand)]
    pub command: Option<Commands>,

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

    #[arg(short, long, default_value_t = 8080)]
    pub port: u16,

    #[arg(short, long, default_value = "refractium.toml")]
    pub config: String,

    #[arg(long)]
    pub debug: bool,

    #[arg(short = 'f', long)]
    pub forward: Vec<String>,

    #[arg(long)]
    pub peek_buffer: Option<usize>,

    #[arg(long)]
    pub peek_timeout: Option<u64>,

    #[arg(long)]
    pub max_connections: Option<usize>,

    #[arg(long)]
    pub no_hot_reload: bool,
}

#[derive(Subcommand, Clone)]
pub enum Commands {
    Tcp,
    Udp,
    Init,
}
