use clap::{Parser, Subcommand};
use crate::ui::SidebarSide;
#[derive(Parser, Debug)]
#[command(author, version, about, no_binary_name = true)]
pub struct CommandLine {
#[command(subcommand)]
pub command: Option<Commands>,
}
#[derive(Subcommand, Debug)]
pub enum Commands {
Filter {
#[arg(trailing_var_arg = true)]
pattern: Vec<String>,
#[arg(long)]
fg: Option<String>,
#[arg(long)]
bg: Option<String>,
#[arg(short = 'l')]
line_mode: bool,
#[arg(long = "field", short = 'f')]
field: bool,
#[arg(long = "regex", short = 'r')]
regex: bool,
},
Exclude {
#[arg(trailing_var_arg = true)]
pattern: Vec<String>,
#[arg(long = "field", short = 'f')]
field: bool,
#[arg(long = "regex", short = 'r')]
regex: bool,
},
SetColor {
#[arg(long)]
fg: Option<String>,
#[arg(long)]
bg: Option<String>,
#[arg(short = 'l')]
line_mode: bool,
},
ExportMarked { path: String },
Save { path: String },
SaveFilters { path: String },
LoadFilters { path: String },
Wrap,
LineNumbers,
SetTheme { theme_name: String },
LevelColors,
Open { path: String },
CloseTab,
ClearFilters,
DisableFilters,
EnableFilters,
Filtering,
HideField { field: String },
ShowField { field: String },
ShowAllFields,
SelectFields,
Docker,
ValueColors,
Export {
path: String,
#[arg(short, long, default_value = "markdown")]
template: String,
},
DateFilter {
expr: Vec<String>,
#[arg(long)]
fg: Option<String>,
#[arg(long)]
bg: Option<String>,
#[arg(short = 'l')]
line_mode: bool,
},
Tail,
ShowKeys,
HideKeys,
Raw,
Stop,
Pause,
Resume,
Reset,
Dlt,
Otel {
#[arg(long)]
http: bool,
port: Option<u16>,
},
EnableMcp {
#[arg(long, default_value = "9876")]
port: u16,
},
DisableMcp,
SidebarPosition { side: SidebarSide },
Run {
#[arg(trailing_var_arg = true, allow_hyphen_values = true)]
command: Vec<String>,
},
}