From 9c7f2f503d7139ba84f3341a405dbeefbfb0165f Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Sun, 25 Sep 2016 14:35:17 +0200 Subject: [PATCH] Use map structure to allow for multiple compile targets --- cmd/init.go | 13 +++++++------ cmd/root.go | 4 +++- settings/settings.go | 12 ++++++++---- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/cmd/init.go b/cmd/init.go index a1c5bd9..c626b0b 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -26,12 +26,13 @@ import ( var ( settingsFile = "ponder.json" - settingsTemplate = []byte(`{ - "Name": "", - "Author": "", - "IgnoreDirs": [".git"], - "LilypondIncludes": [], - "OutputDir": "out" + settingsTemplate = []byte(`{ "default" : { + "Name": "", + "Author": "", + "IgnoreDirs": [".git"], + "LilypondIncludes": [], + "OutputDir": "out" + } }`) gitIgnoreTemplate = []byte(`# Output Folder out/`) diff --git a/cmd/root.go b/cmd/root.go index ec5a73a..06d4765 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -77,5 +77,7 @@ func getSettings() (string, *settings.Settings) { opts, err := settings.FromFile(filepath.Join(path, settingsFile)) helpers.Check(err, "unable to parse settings file") - return path, opts + set := opts["default"] + + return path, &set } diff --git a/settings/settings.go b/settings/settings.go index e8e7a48..0f414a9 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -44,19 +44,23 @@ type Settings struct { } // FromFile reads a settings file in json format and returns the Settings struct -func FromFile(path string) (*Settings, error) { +func FromFile(path string) (map[string]Settings, error) { data, err := ioutil.ReadFile(path) if err != nil { return nil, err } - var s Settings + s := make(map[string]Settings) err = json.Unmarshal(data, &s) if err != nil { return nil, err } - s.AbsolutePaths(filepath.Dir(path)) - return &s, nil + for i := range s { + set := s[i] + set.AbsolutePaths(filepath.Dir(path)) + s[i] = set + } + return s, nil } // AbsolutePaths makes all paths in settings absolute using the given