@@ -87,12 +87,17 @@ func Execute(version string) {
87
87
Name : "no-header" ,
88
88
Usage : "Whether or not to print a header line" ,
89
89
},
90
+ & cli.BoolFlag {
91
+ Name : "install-missing" ,
92
+ Usage : "Install missing versions for installed plugins" ,
93
+ },
90
94
},
91
95
Action : func (cCtx * cli.Context ) error {
92
96
tool := cCtx .Args ().Get (0 )
93
97
94
98
noHeader := cCtx .Bool ("no-header" )
95
- return currentCommand (logger , tool , noHeader )
99
+ install := cCtx .Bool ("install-missing" )
100
+ return currentCommand (logger , tool , noHeader , install )
96
101
},
97
102
},
98
103
{
@@ -367,7 +372,7 @@ Completions are available for: %v`, shell, strings.Join(completions.Names(), ",
367
372
}
368
373
369
374
// This function is a whole mess and needs to be refactored
370
- func currentCommand (logger * log.Logger , tool string , noHeader bool ) error {
375
+ func currentCommand (logger * log.Logger , tool string , noHeader bool , install bool ) error {
371
376
conf , err := config .LoadConfig ()
372
377
if err != nil {
373
378
logger .Printf ("error loading config: %s" , err )
@@ -401,6 +406,11 @@ func currentCommand(logger *log.Logger, tool string, noHeader bool) error {
401
406
for _ , plugin := range allPlugins {
402
407
toolversion , versionFound , versionInstalled := getVersionInfo (conf , plugin , currentDir )
403
408
formatCurrentVersionLine (w , plugin , toolversion , versionFound , versionInstalled , err )
409
+
410
+ if ! versionInstalled && install && len (toolversion .Versions ) > 0 {
411
+ version := toolversion .Versions [0 ]
412
+ versions .InstallOneVersion (conf , plugin , version , false , w , os .Stderr )
413
+ }
404
414
}
405
415
w .Flush ()
406
416
return nil
0 commit comments