@@ -17,6 +17,7 @@ limitations under the License.
17
17
package install
18
18
19
19
import (
20
+ "errors"
20
21
"fmt"
21
22
"path/filepath"
22
23
"strings"
@@ -26,23 +27,34 @@ import (
26
27
"github.com/spf13/pflag"
27
28
)
28
29
29
- func cmdFlagsToArgs (cmd * cobra.Command ) []string {
30
+ func cmdFlagsToArgs (cmd * cobra.Command ) ( []string , error ) {
30
31
var flagsAndVals []string
32
+ var errs []error
31
33
// Use visitor to collect all flags and vals into slice
32
34
cmd .Flags ().Visit (func (f * pflag.Flag ) {
33
35
val := f .Value .String ()
34
36
switch f .Value .Type () {
35
37
case "stringSlice" , "stringToString" :
36
38
flagsAndVals = append (flagsAndVals , fmt .Sprintf (`--%s=%s` , f .Name , strings .Trim (val , "[]" )))
37
39
default :
38
- if f .Name == "env" || f .Name == "force" {
40
+ switch f .Name {
41
+ case "env" , "force" :
39
42
return
40
- }
41
- if f .Name == "data-dir" || f .Name == "token-file" || f .Name == "config" {
42
- val , _ = filepath .Abs (val )
43
+ case "data-dir" , "token-file" , "config" :
44
+ if absVal , err := filepath .Abs (val ); err != nil {
45
+ err = fmt .Errorf ("failed to convert --%s=%s to an absolute path: %w" , f .Name , val , err )
46
+ errs = append (errs , err )
47
+ } else {
48
+ val = absVal
49
+ }
43
50
}
44
51
flagsAndVals = append (flagsAndVals , fmt .Sprintf ("--%s=%s" , f .Name , val ))
45
52
}
46
53
})
47
- return flagsAndVals
54
+
55
+ if err := errors .Join (errs ... ); err != nil {
56
+ return nil , err
57
+ }
58
+
59
+ return flagsAndVals , nil
48
60
}
0 commit comments