9
9
//! application state employs ownership techniques to ensure that
10
10
//! parallel access is consistent and race-free.
11
11
12
+ use clap:: Parser ;
12
13
use crater:: actions:: { self , Action , ActionsCtx } ;
13
14
use crater:: agent:: { self , Capabilities } ;
14
15
use crater:: config:: Config ;
@@ -27,7 +28,6 @@ use std::net::SocketAddr;
27
28
use std:: path:: PathBuf ;
28
29
use std:: str:: FromStr ;
29
30
use std:: time:: Duration ;
30
- use structopt:: clap:: AppSettings ;
31
31
32
32
// An experiment name
33
33
#[ derive( Debug , Clone ) ]
@@ -75,92 +75,70 @@ fn default_capabilities_for_target() -> Capabilities {
75
75
Capabilities :: new ( caps)
76
76
}
77
77
78
- #[ derive( structopt_derive :: StructOpt ) ]
78
+ #[ derive( Parser ) ]
79
79
#[ allow( clippy:: large_enum_variant) ]
80
- #[ structopt(
81
- name = "crater" ,
82
- about = "Kaboom!" ,
83
- raw(
84
- setting = "AppSettings::VersionlessSubcommands" ,
85
- setting = "AppSettings::DeriveDisplayOrder" ,
86
- setting = "AppSettings::SubcommandRequiredElseHelp"
87
- )
88
- ) ]
80
+ #[ clap( name = "crater" , about = "Kaboom!" ) ]
89
81
pub enum Crater {
90
- #[ structopt (
82
+ #[ clap (
91
83
name = "prepare-local" ,
92
84
about = "acquire toolchains, build containers, build crate lists"
93
85
) ]
94
86
PrepareLocal ,
95
87
96
- #[ structopt ( name = "create-lists" , about = "create all the lists of crates" ) ]
88
+ #[ clap ( name = "create-lists" , about = "create all the lists of crates" ) ]
97
89
CreateLists {
98
- #[ structopt ( name = "lists" ) ]
90
+ #[ clap ( name = "lists" ) ]
99
91
lists : Vec < String > ,
100
92
} ,
101
93
102
- #[ structopt ( name = "define-ex" , about = "define an experiment" ) ]
94
+ #[ clap ( name = "define-ex" , about = "define an experiment" ) ]
103
95
DefineEx {
104
- #[ structopt ( name = "experiment" , long = "ex" , default_value = "default" ) ]
96
+ #[ clap ( name = "experiment" , long = "ex" , default_value = "default" ) ]
105
97
ex : Ex ,
106
- #[ structopt ( name = "tc-1" ) ]
98
+ #[ clap ( name = "tc-1" ) ]
107
99
tc1 : Toolchain ,
108
- #[ structopt ( name = "tc-2" ) ]
100
+ #[ clap ( name = "tc-2" ) ]
109
101
tc2 : Toolchain ,
110
- #[ structopt(
111
- name = "mode" ,
112
- long = "mode" ,
113
- raw(
114
- default_value = "Mode::BuildAndTest.to_str()" ,
115
- possible_values = "Mode::possible_values()"
116
- )
117
- ) ]
102
+ #[ clap( name = "mode" , long = "mode" , default_value_t = Mode :: BuildAndTest ) ]
118
103
mode : Mode ,
119
- #[ structopt (
104
+ #[ clap (
120
105
name = "crate-select" ,
121
106
long = "crate-select" ,
122
107
help = "The set of crates on which the experiment will run." ,
123
108
long_help = "The set of crates on which the experiment will run.\n \n \
124
109
This can be one of (full, demo, random-{d}, top-{d}, local) \
125
110
where {d} is a positive integer, or \" list:\" followed \
126
111
by a comma-separated list of crates.",
127
- raw ( default_value = "\" demo\" " , )
112
+ default_value = "demo"
128
113
) ]
129
114
crates : DeferredCrateSelect ,
130
- #[ structopt (
115
+ #[ clap (
131
116
name = "level" ,
132
117
long = "cap-lints" ,
133
- raw(
134
- default_value = "CapLints::Forbid.to_str()" ,
135
- possible_values = "CapLints::possible_values()"
136
- )
118
+ default_value_t = CapLints :: Forbid
137
119
) ]
138
120
cap_lints : CapLints ,
139
- #[ structopt ( name = "priority" , long = "priority" , short = "p" , default_value = "0" ) ]
121
+ #[ clap ( name = "priority" , long = "priority" , short = 'p' , default_value = "0" ) ]
140
122
priority : i32 ,
141
- #[ structopt ( name = "ignore-blacklist" , long = "ignore-blacklist" ) ]
123
+ #[ clap ( name = "ignore-blacklist" , long = "ignore-blacklist" ) ]
142
124
ignore_blacklist : bool ,
143
- #[ structopt ( name = "assign" , long = "assign" ) ]
125
+ #[ clap ( name = "assign" , long = "assign" ) ]
144
126
assign : Option < Assignee > ,
145
- #[ structopt ( name = "requirement" , long = "requirement" ) ]
127
+ #[ clap ( name = "requirement" , long = "requirement" ) ]
146
128
requirement : Option < String > ,
147
129
} ,
148
130
149
- #[ structopt ( name = "edit" , about = "edit an experiment configuration" ) ]
131
+ #[ clap ( name = "edit" , about = "edit an experiment configuration" ) ]
150
132
Edit {
151
- #[ structopt ( name = "name" ) ]
133
+ #[ clap ( name = "name" ) ]
152
134
name : String ,
153
- #[ structopt ( name = "toolchain-start" , long = "start" ) ]
135
+ #[ clap ( name = "toolchain-start" , long = "start" ) ]
154
136
tc1 : Option < Toolchain > ,
155
- #[ structopt ( name = "toolchain-end" , long = "end" ) ]
137
+ #[ clap ( name = "toolchain-end" , long = "end" ) ]
156
138
tc2 : Option < Toolchain > ,
157
- #[ structopt(
158
- name = "mode" ,
159
- long = "mode" ,
160
- raw( possible_values = "Mode::possible_values()" )
161
- ) ]
139
+ #[ clap( name = "mode" , long = "mode" ) ]
162
140
mode : Option < Mode > ,
163
- #[ structopt (
141
+ #[ clap (
164
142
name = "crates" ,
165
143
long = "crates" ,
166
144
help = "The set of crates on which the experiment will run." ,
@@ -170,131 +148,126 @@ pub enum Crater {
170
148
by a comma-separated list of crates."
171
149
) ]
172
150
crates : Option < DeferredCrateSelect > ,
173
- #[ structopt(
174
- name = "cap-lints" ,
175
- long = "cap-lints" ,
176
- raw( possible_values = "CapLints::possible_values()" )
177
- ) ]
151
+ #[ clap( name = "cap-lints" , long = "cap-lints" ) ]
178
152
cap_lints : Option < CapLints > ,
179
- #[ structopt ( name = "priority" , long = "priority" , short = "p" ) ]
153
+ #[ clap ( name = "priority" , long = "priority" , short = 'p' ) ]
180
154
priority : Option < i32 > ,
181
- #[ structopt (
155
+ #[ clap (
182
156
name = "ignore-blacklist" ,
183
157
long = "ignore-blacklist" ,
184
158
conflicts_with = "no-ignore-blacklist"
185
159
) ]
186
160
ignore_blacklist : bool ,
187
- #[ structopt (
161
+ #[ clap (
188
162
name = "no-ignore-blacklist" ,
189
163
long = "no-ignore-blacklist" ,
190
164
conflicts_with = "ignore-blacklist"
191
165
) ]
192
166
no_ignore_blacklist : bool ,
193
- #[ structopt ( name = "assign" , long = "assign" ) ]
167
+ #[ clap ( name = "assign" , long = "assign" ) ]
194
168
assign : Option < Assignee > ,
195
- #[ structopt ( name = "requirement" , long = "requirement" ) ]
169
+ #[ clap ( name = "requirement" , long = "requirement" ) ]
196
170
requirement : Option < String > ,
197
171
} ,
198
172
199
- #[ structopt ( name = "delete-ex" , about = "delete shared data for experiment" ) ]
173
+ #[ clap ( name = "delete-ex" , about = "delete shared data for experiment" ) ]
200
174
DeleteEx {
201
- #[ structopt ( long = "ex" , default_value = "default" ) ]
175
+ #[ clap ( long = "ex" , default_value = "default" ) ]
202
176
ex : Ex ,
203
177
} ,
204
178
205
- #[ structopt (
179
+ #[ clap (
206
180
name = "delete-all-results" ,
207
181
about = "delete all results for an experiment"
208
182
) ]
209
183
DeleteAllResults {
210
- #[ structopt ( name = "experiment" , long = "ex" , default_value = "default" ) ]
184
+ #[ clap ( name = "experiment" , long = "ex" , default_value = "default" ) ]
211
185
ex : Ex ,
212
186
} ,
213
187
214
- #[ structopt (
188
+ #[ clap (
215
189
name = "delete-result" ,
216
190
about = "delete results for a crate from an experiment"
217
191
) ]
218
192
DeleteResult {
219
- #[ structopt ( name = "experiment" , long = "ex" , default_value = "default" ) ]
193
+ #[ clap ( name = "experiment" , long = "ex" , default_value = "default" ) ]
220
194
ex : Ex ,
221
- #[ structopt ( name = "toolchain" , long = "toolchain" , short = "t" ) ]
195
+ #[ clap ( name = "toolchain" , long = "toolchain" , short = 't' ) ]
222
196
tc : Option < Toolchain > ,
223
- #[ structopt ( name = "crate" ) ]
197
+ #[ clap ( name = "crate" ) ]
224
198
krate : Crate ,
225
199
} ,
226
200
227
- #[ structopt ( name = "run-graph" , about = "run a parallelized experiment" ) ]
201
+ #[ clap ( name = "run-graph" , about = "run a parallelized experiment" ) ]
228
202
RunGraph {
229
- #[ structopt ( name = "experiment" , long = "ex" , default_value = "default" ) ]
203
+ #[ clap ( name = "experiment" , long = "ex" , default_value = "default" ) ]
230
204
ex : Ex ,
231
- #[ structopt ( name = "threads" , short = "t" , long = "threads" , default_value = "1" ) ]
205
+ #[ clap ( name = "threads" , short = 't' , long = "threads" , default_value = "1" ) ]
232
206
threads : usize ,
233
- #[ structopt ( name = "docker-env" , long = "docker-env" ) ]
207
+ #[ clap ( name = "docker-env" , long = "docker-env" ) ]
234
208
docker_env : Option < String > ,
235
- #[ structopt ( name = "fast-workspace-init" , long = "fast-workspace-init" ) ]
209
+ #[ clap ( name = "fast-workspace-init" , long = "fast-workspace-init" ) ]
236
210
fast_workspace_init : bool ,
237
211
} ,
238
212
239
- #[ structopt ( name = "gen-report" , about = "generate the experiment report" ) ]
213
+ #[ clap ( name = "gen-report" , about = "generate the experiment report" ) ]
240
214
GenReport {
241
- #[ structopt ( name = "experiment" , long = "ex" , default_value = "default" ) ]
215
+ #[ clap ( name = "experiment" , long = "ex" , default_value = "default" ) ]
242
216
ex : Ex ,
243
- #[ structopt ( name = "destination" ) ]
217
+ #[ clap ( name = "destination" ) ]
244
218
dest : Dest ,
245
- #[ structopt ( name = "force" , long = "force" ) ]
219
+ #[ clap ( name = "force" , long = "force" ) ]
246
220
force : bool ,
247
- #[ structopt ( name = "output-templates" , long = "output-templates" ) ]
221
+ #[ clap ( name = "output-templates" , long = "output-templates" ) ]
248
222
output_templates : bool ,
249
223
} ,
250
224
251
- #[ structopt ( name = "server" ) ]
225
+ #[ clap ( name = "server" ) ]
252
226
Server {
253
- #[ structopt (
227
+ #[ clap (
254
228
name = "bind" ,
255
229
long = "bind" ,
256
- short = "b" ,
230
+ short = 'b' ,
257
231
help = "The address and port to bind to."
258
232
) ]
259
233
bind : Option < SocketAddr > ,
260
234
} ,
261
235
262
- #[ structopt ( name = "agent" ) ]
236
+ #[ clap ( name = "agent" ) ]
263
237
Agent {
264
- #[ structopt ( name = "url" ) ]
238
+ #[ clap ( name = "url" ) ]
265
239
url : String ,
266
- #[ structopt ( name = "token" ) ]
240
+ #[ clap ( name = "token" ) ]
267
241
token : String ,
268
- #[ structopt ( name = "threads" , short = "t" , long = "threads" , default_value = "1" ) ]
242
+ #[ clap ( name = "threads" , short = 't' , long = "threads" , default_value = "1" ) ]
269
243
threads : usize ,
270
- #[ structopt ( name = "docker-env" , long = "docker-env" ) ]
244
+ #[ clap ( name = "docker-env" , long = "docker-env" ) ]
271
245
docker_env : Option < String > ,
272
- #[ structopt ( name = "fast-workspace-init" , long = "fast-workspace-init" ) ]
246
+ #[ clap ( name = "fast-workspace-init" , long = "fast-workspace-init" ) ]
273
247
fast_workspace_init : bool ,
274
- #[ structopt (
248
+ #[ clap (
275
249
name = "capabilities" ,
276
250
help = "Registers additional capabilities for this agent." ,
277
251
long_help = "Registers additional capabilities for this agent.\n \n \
278
252
These will be appended to the defaults for this platform, unless those \
279
253
have been disabled via `--no-default-capabilities`.",
280
- long,
281
- raw( use_delimiter = "true" )
254
+ long
282
255
) ]
283
256
capabilities : Vec < String > ,
284
- #[ structopt (
257
+ #[ clap (
285
258
name = "no-default-capabilities" ,
286
259
long,
287
260
help = "Disables the default capabilities for this platform."
288
261
) ]
289
262
no_default_capabilities : bool ,
290
263
} ,
291
264
292
- #[ structopt (
265
+ #[ clap (
293
266
name = "check-config" ,
294
267
about = "check if the config.toml file is valid"
295
268
) ]
296
269
CheckConfig {
297
- #[ structopt ( name = "file" ) ]
270
+ #[ clap ( name = "file" ) ]
298
271
filename : Option < String > ,
299
272
} ,
300
273
}
0 commit comments