pub mod app;
pub mod config;
pub mod export;
pub mod handlers;
pub mod hooks;
pub mod i18n;
pub mod import;
pub mod probe;
pub mod ssh;
pub mod state;
pub mod ui;
pub mod wallix;
#[derive(clap::Parser, Debug)]
#[command(author, version, about, long_about = None)]
pub struct Cli {
#[arg(short, long, value_name = "FILE")]
pub config: Option<String>,
#[arg(long, value_name = "[USER@]HOST[:PORT]", conflicts_with_all = ["jump", "wallix"])]
pub direct: Option<String>,
#[arg(long, value_name = "[USER@]HOST[:PORT]", conflicts_with_all = ["direct", "wallix"])]
pub jump: Option<String>,
#[arg(long, value_name = "[USER@]HOST[:PORT]", conflicts_with_all = ["direct", "jump"])]
pub wallix: Option<String>,
#[arg(short, long, value_name = "USER")]
pub user: Option<String>,
#[arg(short, long, value_name = "PORT")]
pub port: Option<u16>,
#[arg(short, long, value_name = "PATH")]
pub key: Option<String>,
#[arg(short, long)]
pub verbose: bool,
#[arg(long)]
pub validate: bool,
#[arg(long, conflicts_with_all = ["validate", "direct", "jump", "wallix"])]
pub import_ssh_config: bool,
#[arg(long, value_name = "FILE", requires = "import_ssh_config")]
pub ssh_config_path: Option<String>,
#[arg(long, value_name = "FILE", requires = "import_ssh_config")]
pub output: Option<String>,
#[arg(long, requires = "import_ssh_config")]
pub dry_run: bool,
#[arg(long, value_name = "FORMAT", conflicts_with_all = ["validate", "direct", "jump", "wallix", "import_ssh_config"])]
pub export: Option<String>,
#[arg(long = "export-output", value_name = "FILE", requires = "export")]
pub export_output: Option<String>,
#[arg(long = "export-filter", value_name = "QUERY", requires = "export")]
pub export_filter: Option<String>,
#[arg(long, conflicts_with_all = ["validate", "direct", "jump", "wallix", "import_ssh_config", "export"])]
pub list: bool,
#[arg(long = "list-filter", value_name = "QUERY", requires = "list")]
pub list_filter: Option<String>,
#[arg(long, value_name = "GROUP", conflicts_with_all = ["validate", "direct", "jump", "wallix", "import_ssh_config", "export", "list"])]
pub exec_group: Option<String>,
#[arg(long = "exec-cmd", value_name = "CMD", requires = "exec_group")]
pub exec_cmd: Option<String>,
#[arg(
long = "exec-timeout",
value_name = "SECS",
requires = "exec_group",
default_value = "30"
)]
pub exec_timeout: u64,
}