@@ -40,10 +40,6 @@ fn main() -> Result<()> {
40
40
41
41
let args = Cli :: parse ( ) ;
42
42
43
- match args. command {
44
- Commands :: Run => ( ) ,
45
- }
46
-
47
43
let workflow_text = fs:: read_to_string ( & args. workflow ) ?;
48
44
let workflow = YamlLoader :: load_from_str ( & workflow_text) ?;
49
45
@@ -52,6 +48,14 @@ fn main() -> Result<()> {
52
48
53
49
let matrix = Matrix :: from_yaml ( & workflow) ;
54
50
51
+ match args. command {
52
+ Commands :: List => {
53
+ matrix. show ( ) ;
54
+ return Ok ( ( ) ) ;
55
+ }
56
+ Commands :: Run => ( ) ,
57
+ }
58
+
55
59
let mut children = vec ! [ ] ;
56
60
let state = State :: new ( matrix. envs . len ( ) ) ;
57
61
let st2 = state. clone ( ) ;
@@ -100,6 +104,8 @@ struct Cli {
100
104
enum Commands {
101
105
/// Runs the tests.
102
106
Run ,
107
+ /// List available tests.
108
+ List ,
103
109
}
104
110
105
111
/// State, for printing status.
@@ -246,6 +252,13 @@ impl Matrix {
246
252
envs,
247
253
}
248
254
}
255
+
256
+ /// Print out all of the feature sets.
257
+ fn show ( & self ) {
258
+ for ( i, feature) in self . envs . iter ( ) . enumerate ( ) {
259
+ println ! ( "{:3}. {}" , i, feature. simple_textual( ) ) ;
260
+ }
261
+ }
249
262
}
250
263
251
264
impl FeatureSet {
@@ -304,6 +317,18 @@ impl FeatureSet {
304
317
305
318
buf
306
319
}
320
+
321
+ /// Generate a simpler textual representation, without showing the environment.
322
+ fn simple_textual ( & self ) -> String {
323
+ use std:: fmt:: Write ;
324
+
325
+ let mut buf = String :: new ( ) ;
326
+ for v in & self . values {
327
+ write ! ( & mut buf, " {}" , v) . unwrap ( ) ;
328
+ }
329
+
330
+ buf
331
+ }
307
332
}
308
333
309
334
fn lookup_matrix ( y : & Yaml ) -> Option < & Vec < Yaml > > {
0 commit comments