diff --git a/cmd/run/main.go b/cmd/run/main.go index 5163223..87de0fe 100644 --- a/cmd/run/main.go +++ b/cmd/run/main.go @@ -62,6 +62,6 @@ var Cmd = &cobra.Command{ func init() { flags := Cmd.Flags() flags.BoolVarP(&verbose, "verbose", "v", verbose, "Verbose logging") - flags.StringToStringVarP(&cmdInputs, "inputs", "i", cmdInputs, "Input variables") - flags.StringVarP(&inputFile, "inputfile", "f", inputFile, "Input variables file") + flags.StringToStringVarP(&cmdInputs, "config", "c", cmdInputs, "Config variable") + flags.StringVarP(&inputFile, "configFile", "f", inputFile, "Config file") } diff --git a/config/config.go b/config/config.go index 7f69877..f1b3ac2 100644 --- a/config/config.go +++ b/config/config.go @@ -2,7 +2,7 @@ package config import "strings" -type Config map[string]string +type Config map[string]*string type Type string diff --git a/playbook/execute.go b/playbook/execute.go index 2706566..0072dad 100644 --- a/playbook/execute.go +++ b/playbook/execute.go @@ -3,6 +3,7 @@ package playbook import ( "fmt" "path/filepath" + "strings" "github.com/bmeg/flame" "github.com/bmeg/sifter/logger" @@ -22,6 +23,7 @@ func fileExists(filename string) bool { func (pb *Playbook) PrepConfig(inputs map[string]string, workdir string) (map[string]string, error) { workdir, _ = filepath.Abs(workdir) + missing := map[string]bool{} out := map[string]string{} for _, v := range pb.GetConfigFields() { if val, ok := inputs[v.Name]; ok { @@ -32,16 +34,27 @@ func (pb *Playbook) PrepConfig(inputs map[string]string, workdir string) (map[st out[v.Name] = val } } else if val, ok := pb.Config[v.Name]; ok { - if v.IsFile() || v.IsDir() { - defaultPath := filepath.Join(filepath.Dir(pb.path), val) - out[v.Name], _ = filepath.Abs(defaultPath) + if val != nil { + if v.IsFile() || v.IsDir() { + defaultPath := filepath.Join(filepath.Dir(pb.path), *val) + out[v.Name], _ = filepath.Abs(defaultPath) + } else { + out[v.Name] = *val + } } else { - out[v.Name] = val + missing[v.Name] = true } } else { return nil, fmt.Errorf("config %s not defined", v.Name) } } + if len(missing) > 0 { + o := []string{} + for k := range missing { + o = append(o, k) + } + return nil, fmt.Errorf("missing inputs: %s", strings.Join(o, ",")) + } return out, nil }