diff --git a/goopack/goopack.go b/goopack/goopack.go index aa83899..1fb477f 100644 --- a/goopack/goopack.go +++ b/goopack/goopack.go @@ -398,6 +398,17 @@ func addFlags(args []string) { } } +func populateVars() map[string]string { + varMap := map[string]string{} + flag.Visit(func(flg *flag.Flag) { + if strings.HasPrefix(flg.Name, varFlagPrefix) { + varMap[strings.TrimPrefix(flg.Name, varFlagPrefix)] = flg.Value.String() + } + }) + + return varMap +} + func usage() { fmt.Printf("Usage: %s \n", filepath.Base(os.Args[0])) } @@ -431,7 +442,7 @@ func main() { } } - var varMap map[string]string + varMap := populateVars() gs, err := goolib.ReadGooSpec(flag.Arg(0), varMap) if err != nil { log.Fatal(err) diff --git a/goopack/goopack_test.go b/goopack/goopack_test.go index a8c318f..599a6ae 100644 --- a/goopack/goopack_test.go +++ b/goopack/goopack_test.go @@ -165,6 +165,18 @@ func TestWriteFiles(t *testing.T) { } } +func TestPopulateVars(t *testing.T) { + flag.String("var:TestPopulateVars1", "", "") + flag.String("var:TestPopulateVars2", "", "") + flag.CommandLine.Parse([]string{"-var:TestPopulateVars1", "value", "-var:TestPopulateVars2=value"}) + want := map[string]string{"TestPopulateVars1": "value", "TestPopulateVars2": "value"} + + got := populateVars() + if !reflect.DeepEqual(want, got) { + t.Errorf("want: %q, got: %q", want, got) + } +} + func TestAddFlags(t *testing.T) { firstFlag := "var:first_var" secondFlag := "var:second_var"