ralph/cli/task/args/
batch.rs1use clap::{Args, Subcommand};
15
16use crate::cli::task::args::types::{TaskEditFieldArg, TaskPriorityArg, TaskStatusArg};
17
18#[derive(Args, Clone, Debug, Default)]
20pub struct BatchSelectArgs {
21 #[arg(value_name = "TASK_ID...", conflicts_with = "tag_filter")]
23 pub task_ids: Vec<String>,
24
25 #[arg(long, value_name = "TAG", conflicts_with = "task_ids")]
27 pub tag_filter: Vec<String>,
28
29 #[arg(long, value_enum, value_name = "STATUS")]
31 pub status_filter: Vec<TaskStatusArg>,
32
33 #[arg(long, value_enum, value_name = "PRIORITY")]
35 pub priority_filter: Vec<TaskPriorityArg>,
36
37 #[arg(long, value_name = "PATTERN")]
39 pub scope_filter: Vec<String>,
40
41 #[arg(long, value_name = "WHEN")]
44 pub older_than: Option<String>,
45}
46
47#[derive(Subcommand)]
49pub enum BatchOperation {
50 Status(BatchStatusArgs),
52 Field(BatchFieldArgs),
54 Edit(BatchEditArgs),
56
57 Delete(BatchDeleteArgs),
59
60 Archive(BatchArchiveArgs),
62
63 Clone(BatchCloneArgs),
65
66 Split(BatchSplitArgs),
68
69 #[command(name = "plan-append")]
71 PlanAppend(BatchPlanAppendArgs),
72
73 #[command(name = "plan-prepend")]
75 PlanPrepend(BatchPlanPrependArgs),
76}
77
78#[derive(Args)]
80pub struct BatchStatusArgs {
81 #[arg(value_enum)]
83 pub status: TaskStatusArg,
84
85 #[arg(long)]
87 pub note: Option<String>,
88
89 #[command(flatten)]
90 pub select: BatchSelectArgs,
91}
92
93#[derive(Args)]
95pub struct BatchFieldArgs {
96 pub key: String,
98
99 pub value: String,
101
102 #[command(flatten)]
103 pub select: BatchSelectArgs,
104}
105
106#[derive(Args)]
108pub struct BatchEditArgs {
109 #[arg(value_enum)]
111 pub field: TaskEditFieldArg,
112
113 pub value: String,
115
116 #[command(flatten)]
117 pub select: BatchSelectArgs,
118}
119
120#[derive(Args)]
122pub struct BatchDeleteArgs {
123 #[command(flatten)]
124 pub select: BatchSelectArgs,
125}
126
127#[derive(Args)]
129pub struct BatchArchiveArgs {
130 #[command(flatten)]
131 pub select: BatchSelectArgs,
132}
133
134#[derive(Args)]
136pub struct BatchCloneArgs {
137 #[arg(long, value_enum)]
139 pub status: Option<TaskStatusArg>,
140
141 #[arg(long)]
143 pub title_prefix: Option<String>,
144
145 #[command(flatten)]
146 pub select: BatchSelectArgs,
147}
148
149#[derive(Args)]
151pub struct BatchSplitArgs {
152 #[arg(short = 'n', long, default_value = "2")]
154 pub number: usize,
155
156 #[arg(long, value_enum)]
158 pub status: Option<TaskStatusArg>,
159
160 #[arg(long)]
162 pub title_prefix: Option<String>,
163
164 #[arg(long)]
166 pub distribute_plan: bool,
167
168 #[command(flatten)]
169 pub select: BatchSelectArgs,
170}
171
172#[derive(Args)]
174pub struct BatchPlanAppendArgs {
175 #[arg(long = "plan-item", value_name = "ITEM", required = true)]
177 pub plan_items: Vec<String>,
178
179 #[command(flatten)]
180 pub select: BatchSelectArgs,
181}
182
183#[derive(Args)]
185pub struct BatchPlanPrependArgs {
186 #[arg(long = "plan-item", value_name = "ITEM", required = true)]
188 pub plan_items: Vec<String>,
189
190 #[command(flatten)]
191 pub select: BatchSelectArgs,
192}
193
194#[derive(Args)]
196pub struct TaskBatchArgs {
197 #[command(subcommand)]
199 pub operation: BatchOperation,
200
201 #[arg(long)]
203 pub dry_run: bool,
204
205 #[arg(long)]
207 pub continue_on_error: bool,
208}