package kvflag import ( "encoding/json" "fmt" "os" ) // FlagJSON is a flag.Value implementation for parsing user variables // from the command-line using JSON files. type FlagJSON map[string]string func (v *FlagJSON) String() string { return "" } func (v *FlagJSON) Set(raw string) error { f, err := os.Open(raw) if err != nil { return err } defer f.Close() if *v == nil { *v = make(map[string]string) } if err := json.NewDecoder(f).Decode(v); err != nil { return fmt.Errorf( "Error reading variables in '%s': %s", raw, err) } return nil }