use clap::{Args, ValueEnum};
#[derive(Args, Clone, Debug)]
pub(crate) struct EditActionArgs {
#[arg(long, group = "edit_action", num_args = 0..=1)]
pub(crate) set: Option<Option<String>>,
#[arg(long, group = "edit_action", num_args = 0..=1)]
pub(crate) add: Option<Option<String>>,
#[arg(long, group = "edit_action", num_args = 0..=1)]
pub(crate) remove: Option<Option<String>>,
#[arg(long, group = "edit_action")]
pub(crate) tick: Option<TickStatus>,
#[arg(long)]
pub(crate) stdin: bool,
#[arg(long, allow_hyphen_values = true)]
pub(crate) at: Option<i32>,
#[arg(long)]
pub(crate) exact: bool,
#[arg(long)]
pub(crate) regex: bool,
#[arg(long)]
pub(crate) all: bool,
}
#[derive(ValueEnum, Clone, Copy, Debug)]
pub enum TickStatus {
Done,
Pending,
Cancelled,
Accepted,
Considered,
Rejected,
}
#[derive(ValueEnum, Clone, Copy, Debug)]
pub enum WorkTickStatus {
Done,
Pending,
Cancelled,
}
impl From<WorkTickStatus> for TickStatus {
fn from(value: WorkTickStatus) -> Self {
match value {
WorkTickStatus::Done => TickStatus::Done,
WorkTickStatus::Pending => TickStatus::Pending,
WorkTickStatus::Cancelled => TickStatus::Cancelled,
}
}
}
#[derive(ValueEnum, Clone, Copy, Debug)]
pub enum AdrTickStatus {
Accepted,
Considered,
Rejected,
}
impl From<AdrTickStatus> for TickStatus {
fn from(value: AdrTickStatus) -> Self {
match value {
AdrTickStatus::Accepted => TickStatus::Accepted,
AdrTickStatus::Considered => TickStatus::Considered,
AdrTickStatus::Rejected => TickStatus::Rejected,
}
}
}