Skip to main content

plan_issue_cli/commands/
sprint.rs

1use std::path::PathBuf;
2
3use clap::Args;
4use serde::Serialize;
5
6use super::{CommentModeArgs, GroupingArgs, PrefixArgs, SummaryArgs};
7
8#[derive(Debug, Clone, Args, Serialize)]
9pub struct StartSprintArgs {
10    /// Plan markdown path.
11    #[arg(long, value_name = "path")]
12    pub plan: PathBuf,
13
14    /// Plan issue number.
15    #[arg(long, value_name = "number")]
16    pub issue: u64,
17
18    /// Sprint number.
19    #[arg(long, value_parser = clap::value_parser!(u16).range(1..), value_name = "number")]
20    pub sprint: u16,
21
22    /// Sprint task-spec output path override.
23    #[arg(long, value_name = "path")]
24    pub task_spec_out: Option<PathBuf>,
25
26    /// start-sprint output directory for subagent task prompts.
27    #[arg(long, value_name = "path")]
28    pub subagent_prompts_out: Option<PathBuf>,
29
30    #[command(flatten)]
31    pub prefixes: PrefixArgs,
32
33    #[command(flatten)]
34    pub grouping: GroupingArgs,
35
36    #[command(flatten)]
37    pub comment_mode: CommentModeArgs,
38}
39
40#[derive(Debug, Clone, Args, Serialize)]
41pub struct ReadySprintArgs {
42    /// Plan markdown path.
43    #[arg(long, value_name = "path")]
44    pub plan: PathBuf,
45
46    /// Plan issue number.
47    #[arg(long, value_name = "number")]
48    pub issue: u64,
49
50    /// Sprint number.
51    #[arg(long, value_parser = clap::value_parser!(u16).range(1..), value_name = "number")]
52    pub sprint: u16,
53
54    /// Sprint task-spec output path override.
55    #[arg(long, value_name = "path")]
56    pub task_spec_out: Option<PathBuf>,
57
58    #[command(flatten)]
59    pub prefixes: PrefixArgs,
60
61    #[command(flatten)]
62    pub grouping: GroupingArgs,
63
64    #[command(flatten)]
65    pub summary: SummaryArgs,
66
67    #[command(flatten)]
68    pub comment_mode: CommentModeArgs,
69}
70
71#[derive(Debug, Clone, Args, Serialize)]
72pub struct AcceptSprintArgs {
73    /// Plan markdown path.
74    #[arg(long, value_name = "path")]
75    pub plan: PathBuf,
76
77    /// Plan issue number.
78    #[arg(long, value_name = "number")]
79    pub issue: u64,
80
81    /// Sprint number.
82    #[arg(long, value_parser = clap::value_parser!(u16).range(1..), value_name = "number")]
83    pub sprint: u16,
84
85    /// Sprint task-spec output path override.
86    #[arg(long, value_name = "path")]
87    pub task_spec_out: Option<PathBuf>,
88
89    #[command(flatten)]
90    pub prefixes: PrefixArgs,
91
92    #[command(flatten)]
93    pub grouping: GroupingArgs,
94
95    /// Review approval comment URL.
96    #[arg(long = "approved-comment-url", value_name = "url")]
97    pub approved_comment_url: String,
98
99    #[command(flatten)]
100    pub summary: SummaryArgs,
101
102    #[command(flatten)]
103    pub comment_mode: CommentModeArgs,
104}
105
106#[derive(Debug, Clone, Args, Serialize)]
107pub struct MultiSprintGuideArgs {
108    /// Plan markdown path.
109    #[arg(long, value_name = "path")]
110    pub plan: PathBuf,
111
112    /// First sprint to include.
113    #[arg(long, value_parser = clap::value_parser!(u16).range(1..), default_value_t = 1)]
114    pub from_sprint: u16,
115
116    /// Last sprint to include.
117    #[arg(long, value_parser = clap::value_parser!(u16).range(1..), value_name = "number")]
118    pub to_sprint: Option<u16>,
119}