From 8501af1f9ba3b820cafab990b819ffb8b89a6bb4 Mon Sep 17 00:00:00 2001 From: Kyle Ellrott Date: Fri, 24 Jan 2025 23:53:28 -0800 Subject: [PATCH 1/2] Testing adding required input parameters --- config/config.go | 2 +- playbook/execute.go | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) 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..e08fc15 100644 --- a/playbook/execute.go +++ b/playbook/execute.go @@ -32,11 +32,15 @@ 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 + return nil, fmt.Errorf("undefine parameter %s", v.Name) } } else { return nil, fmt.Errorf("config %s not defined", v.Name) From 487ab6e120eafbde2f4236098bd9336095945a8f Mon Sep 17 00:00:00 2001 From: Kyle Ellrott Date: Mon, 27 Jan 2025 12:41:00 -0800 Subject: [PATCH 2/2] Checking for user required inputs --- cmd/run/main.go | 4 ++-- playbook/execute.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 3 deletions(-) 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/playbook/execute.go b/playbook/execute.go index e08fc15..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 { @@ -40,12 +42,19 @@ func (pb *Playbook) PrepConfig(inputs map[string]string, workdir string) (map[st out[v.Name] = *val } } else { - return nil, fmt.Errorf("undefine parameter %s", v.Name) + 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 }