use clap::{Args, Parser, Subcommand};
#[derive(Debug, Parser, PartialEq)]
#[command(author, about)]
pub struct TaskArgs {
#[arg(short, long)]
pub config: Option<String>,
#[arg(short, long)]
pub generate: Option<String>,
#[arg(short, long, default_value = "sock")]
pub engine: Option<String>,
#[arg(short, long)]
pub version: bool,
#[command(subcommand)]
pub commands: Option<Commands>,
}
impl TaskArgs {
pub fn new() -> Self {
Self::parse()
}
}
#[derive(Debug, Subcommand, PartialEq)]
pub enum Commands {
Run(AddArgs),
Add(AddArgs),
Reload(AddArgs),
Start(FlagArgs),
Restart(FlagArgs),
Stop(FlagArgs),
Remove(FlagArgs),
Pause(FlagArgs),
Resume(FlagArgs),
List(ListArgs),
}
#[derive(Args, Debug, PartialEq)]
pub struct ListArgs {
#[arg(short = 'p', long)]
pub path: Option<String>,
#[arg(short = 'r', long, default_value = r"^.*\.(toml|ini|json)$")]
pub regex: Option<String>,
#[arg(short = 'f', long)]
pub config: Option<String>,
#[arg(short = 'i', long)]
pub id: Option<i64>,
#[arg(short = 'n', long)]
pub name: Option<String>,
#[arg(short, long)]
pub group: Option<String>,
#[arg(short = 'R', long)]
pub mat: bool,
#[arg(short = 'm', long, default_value = "false")]
pub more: bool,
#[arg(short = 'l', long, default_value = "false")]
pub less: bool,
}
#[derive(Args, Debug, PartialEq)]
pub struct FlagArgs {
#[arg(short = 'p', long)]
pub path: Option<String>,
#[arg(short = 'r', long, default_value = r"^.*\.(toml|ini|json)$")]
pub regex: Option<String>,
#[arg(short = 'f', long)]
pub config: Option<String>,
#[arg(short, long)]
pub id: Option<i64>,
#[arg(short, long)]
pub name: Option<String>,
#[arg(short, long)]
pub group: Option<String>,
#[arg(short = 'm', long)]
pub mat: bool,
}
#[derive(Args, Debug, PartialEq)]
pub struct AddArgs {
#[arg(short = 'p', long)]
pub path: Option<String>,
#[arg(short = 'r', long, default_value = r"^.*\.(toml|ini|json)$")]
pub regex: Option<String>,
#[arg(short = 'f', long)]
pub config: Option<String>,
#[arg(short, long)]
pub name: Option<String>,
#[arg(short, long)]
pub command: Option<String>,
#[arg(short, long)]
pub args: Option<Vec<String>>,
#[arg(short, long)]
pub group: Option<String>,
#[arg(short = 'd', long)]
pub dir: Option<String>,
#[arg(short = 'e', long)]
pub env: Option<Vec<String>>,
#[arg(short = 'i', long, default_value = "false")]
pub stdin: bool,
#[arg(short = 'o', long)]
pub stdout: Option<String>,
#[arg(short = 'w', long)]
pub stderr: Option<String>,
}
#[derive(Debug, Parser, PartialEq)]
#[command(author, about)]
pub struct DaemonArgs {
#[arg(short, long)]
pub config: Option<String>,
#[arg(short, long, default_value = "true")]
pub load: bool,
#[arg(short, long)]
pub version: bool,
}
impl DaemonArgs {
pub fn new() -> Self {
Self::parse()
}
}