#[allow(clippy::wildcard_imports)]
use super::*;
#[derive(Args, Debug, Clone, PartialEq, Eq)]
pub struct BulkSelection {
#[arg(long, value_name = "LIST")]
pub select: Option<String>,
#[arg(long, value_name = "QUERY")]
pub filter: Option<String>,
#[arg(long, value_name = "QUERY")]
pub search: Option<String>,
#[arg(long, value_name = "SCOPE")]
pub scope: Option<String>,
#[arg(long)]
pub apply: bool,
}
impl BulkAction {
pub fn selection(&self) -> &BulkSelection {
match self {
Self::Edit { selection, .. }
| Self::Link { selection, .. }
| Self::Unlink { selection, .. }
| Self::Archive { selection } => selection,
}
}
pub fn is_apply(&self) -> bool {
self.selection().apply
}
}
#[derive(Subcommand, Debug, Clone, PartialEq, Eq)]
pub enum BulkAction {
Edit {
#[command(flatten)]
selection: BulkSelection,
#[arg(long, value_name = "COLUMN")]
status: Option<String>,
#[arg(long, value_name = "PRIORITY")]
priority: Option<String>,
#[arg(long, value_name = "ASSIGNEE")]
assignee: Option<String>,
#[arg(long, value_name = "LABELS")]
labels: Option<String>,
#[arg(long, value_name = "DATE")]
start_date: Option<String>,
#[arg(long, value_name = "DATE")]
due_date: Option<String>,
#[arg(long, value_name = "ESTIMATE")]
estimate: Option<String>,
#[arg(long, value_name = "CYCLES")]
cycles: Option<String>,
#[arg(long, value_name = "MILESTONES")]
milestones: Option<String>,
#[arg(long, value_name = "FIELD")]
clear: Option<String>,
},
Link {
#[command(flatten)]
selection: BulkSelection,
#[arg(long, value_name = "SELECTOR")]
target: String,
#[arg(long, value_name = "KIND")]
r#type: Option<String>,
},
Unlink {
#[command(flatten)]
selection: BulkSelection,
#[arg(long, value_name = "SELECTOR")]
target: String,
#[arg(long, value_name = "KIND")]
r#type: Option<String>,
},
Archive {
#[command(flatten)]
selection: BulkSelection,
},
}