ralph/cli/task/args/
template.rs1use clap::{Args, Subcommand};
14
15use crate::agent;
16
17#[derive(Args)]
18pub struct TaskTemplateArgs {
19 #[command(subcommand)]
20 pub command: TaskTemplateCommand,
21}
22
23#[derive(Args)]
25pub struct TaskFromArgs {
26 #[command(subcommand)]
27 pub command: TaskFromCommand,
28}
29
30#[derive(Subcommand)]
32pub enum TaskFromCommand {
33 #[command(after_long_help = "Examples:
38 ralph task from template bug --title \"Fix login timeout\"
39 ralph task from template feature --title \"Add dark mode\" --set target=src/ui/theme.rs
40 ralph task from template add-tests --title \"Test auth module\" --set target=src/auth/mod.rs
41 ralph task from template refactor-performance --title \"Optimize parser\" --set target=src/parser/
42 ralph task from template custom-template --title \"Custom task\" --set component=auth
43
44Template variables:
45 {{target}} - Target file/path (set via --set target=... or positional TARGET)
46 {{module}} - Derived module name (e.g., src/cli/task.rs -> cli::task)
47 {{file}} - Filename only (e.g., task.rs)
48 {{branch}} - Current git branch name
49
50Use 'ralph task template list' to see available templates.
51Use 'ralph task template show <name>' to view template details.")]
52 Template(TaskFromTemplateArgs),
53}
54
55#[derive(Args)]
57pub struct TaskFromTemplateArgs {
58 pub template: String,
60
61 #[arg(long = "title")]
63 pub title: String,
64
65 #[arg(long = "set", value_name = "VAR=VALUE")]
68 pub variables: Vec<String>,
69
70 #[arg(short, long)]
72 pub tags: Option<String>,
73
74 #[arg(long)]
76 pub runner: Option<String>,
77
78 #[arg(long)]
80 pub model: Option<String>,
81
82 #[arg(short = 'e', long)]
84 pub effort: Option<String>,
85
86 #[arg(long = "repo-prompt", value_enum, value_name = "MODE")]
88 pub repo_prompt: Option<agent::RepoPromptMode>,
89
90 #[command(flatten)]
91 pub runner_cli: agent::RunnerCliArgs,
92
93 #[arg(long)]
95 pub strict_templates: bool,
96
97 #[arg(long)]
99 pub dry_run: bool,
100}
101
102#[derive(Subcommand)]
103#[allow(clippy::large_enum_variant)]
104pub enum TaskTemplateCommand {
105 List,
107 Show(TaskTemplateShowArgs),
109 Build(TaskTemplateBuildArgs),
111}
112
113#[derive(Args)]
114pub struct TaskTemplateShowArgs {
115 pub name: String,
117}
118
119#[derive(Args)]
120pub struct TaskTemplateBuildArgs {
121 pub template: String,
123
124 #[arg(value_name = "TARGET")]
127 pub target: Option<String>,
128
129 pub request: Vec<String>,
131
132 #[arg(short, long)]
134 pub tags: Option<String>,
135
136 #[arg(short, long)]
138 pub scope: Option<String>,
139
140 #[arg(long)]
142 pub runner: Option<String>,
143
144 #[arg(long)]
146 pub model: Option<String>,
147
148 #[arg(short = 'e', long)]
151 pub effort: Option<String>,
152
153 #[arg(long = "repo-prompt", value_enum, value_name = "MODE")]
155 pub repo_prompt: Option<agent::RepoPromptMode>,
156
157 #[command(flatten)]
158 pub runner_cli: agent::RunnerCliArgs,
159
160 #[arg(long)]
164 pub strict_templates: bool,
165}