#[allow(clippy::wildcard_imports)]
use super::*;
#[derive(Debug, Clone, Subcommand)]
pub enum TimeCommand {
Add {
#[arg(value_name = "ISSUE")]
issue: String,
#[arg(long, value_name = "N", allow_hyphen_values = true)]
minutes: i64,
#[arg(long, value_name = "YYYY-MM-DD")]
date: Option<String>,
#[arg(long, value_name = "IDENTITY")]
author: String,
#[arg(long, value_name = "TEXT")]
note: Option<String>,
},
Edit {
#[arg(value_name = "ISSUE")]
issue: String,
#[arg(long, value_name = "ID")]
entry: String,
#[command(flatten)]
change: TimeEditArgs,
},
Delete {
#[arg(value_name = "ISSUE")]
issue: String,
#[arg(long, value_name = "ID")]
entry: String,
#[arg(long, value_name = "TEXT")]
reason: Option<String>,
#[arg(long)]
confirm: bool,
},
Show {
#[arg(value_name = "ISSUE")]
issue: String,
},
History {
#[arg(value_name = "ISSUE")]
issue: String,
},
Total {
#[arg(value_name = "ISSUE")]
selector: Option<String>,
#[command(flatten)]
filter: TimeTotalArgs,
},
}
#[derive(Debug, Clone, Args)]
pub struct TimeEditArgs {
#[arg(long, value_name = "N", allow_hyphen_values = true)]
pub minutes: Option<i64>,
#[arg(long, value_name = "YYYY-MM-DD", conflicts_with = "clear_date")]
pub date: Option<String>,
#[arg(long)]
pub clear_date: bool,
#[arg(long, value_name = "TEXT", conflicts_with = "clear_note")]
pub note: Option<String>,
#[arg(long)]
pub clear_note: bool,
#[arg(long, value_name = "IDENTITY")]
pub author: Option<String>,
#[arg(long, value_name = "TEXT")]
pub reason: Option<String>,
}
#[derive(Debug, Clone, Args)]
pub struct TimeTotalArgs {
#[arg(long, value_name = "N")]
pub issue: Option<u32>,
#[arg(long, value_name = "IDENTITY")]
pub assignee: Option<String>,
#[arg(long, value_name = "YYYY-MM-DD")]
pub from: Option<String>,
#[arg(long, value_name = "YYYY-MM-DD")]
pub to: Option<String>,
#[arg(long)]
pub audit: bool,
#[arg(long, value_name = "DIMENSION")]
pub by: Option<String>,
}