cmd/var_flag_internal.go (62 lines of code) (raw):

package cmd import ( "context" "errors" "fmt" "github.com/Azure/golden" "strings" ) var cf = &commonFlags{} type commonFlags struct { tfDir string mptfDirs []string mptfVars []string mptfVarFiles []string } type localizedMptfDir struct { path string dispose func() } func (l localizedMptfDir) Dispose() { if l.dispose != nil { l.dispose() } } func (c *commonFlags) MptfDirs(ctx context.Context) ([]localizedMptfDir, error) { var r []localizedMptfDir for _, originalDir := range c.mptfDirs { localizedPath, disposeFunc, err := localizeConfigFolder(originalDir, ctx) if err != nil { for _, localizedDir := range r { localizedDir.Dispose() } return nil, fmt.Errorf("cannot get config path: %s: %+v", originalDir, err) } r = append(r, localizedMptfDir{path: localizedPath, dispose: disposeFunc}) } return r, nil } func varFlags(args []string) ([]golden.CliFlagAssignedVariables, error) { var flags []golden.CliFlagAssignedVariables for i := 0; i < len(args); i++ { if args[i] != "--mptf-var" && args[i] != "--mptf-var-file" { continue } if i+1 == len(args) { return nil, errors.New("missing value for " + args[i]) } arg := args[i+1] if args[i] == "--mptf-var-file" { flags = append(flags, golden.NewCliFlagAssignedVariableFile(arg)) i++ continue } varAssignment := strings.Split(arg, "=") if len(varAssignment) != 2 { return nil, fmt.Errorf("the given --mptf option \"%s\" is not correctly specified. Must be a variable name and value separated by an equals sign, like --mptf-var key=value", arg) } flags = append(flags, golden.NewCliFlagAssignedVariable(varAssignment[0], varAssignment[1])) i++ // skip next arg } return flags, nil }