A small application to manage Lilypond music repositories

Use map structure to allow for multiple compile targets

+18 -11
+7 -6
cmd/init.go
··· 26 26 27 27 var ( 28 28 settingsFile = "ponder.json" 29 - settingsTemplate = []byte(`{ 30 - "Name": "", 31 - "Author": "", 32 - "IgnoreDirs": [".git"], 33 - "LilypondIncludes": [], 34 - "OutputDir": "out" 29 + settingsTemplate = []byte(`{ "default" : { 30 + "Name": "", 31 + "Author": "", 32 + "IgnoreDirs": [".git"], 33 + "LilypondIncludes": [], 34 + "OutputDir": "out" 35 + } 35 36 }`) 36 37 gitIgnoreTemplate = []byte(`# Output Folder 37 38 out/`)
+3 -1
cmd/root.go
··· 77 77 opts, err := settings.FromFile(filepath.Join(path, settingsFile)) 78 78 helpers.Check(err, "unable to parse settings file") 79 79 80 - return path, opts 80 + set := opts["default"] 81 + 82 + return path, &set 81 83 }
+8 -4
settings/settings.go
··· 44 44 } 45 45 46 46 // FromFile reads a settings file in json format and returns the Settings struct 47 - func FromFile(path string) (*Settings, error) { 47 + func FromFile(path string) (map[string]Settings, error) { 48 48 data, err := ioutil.ReadFile(path) 49 49 if err != nil { 50 50 return nil, err 51 51 } 52 52 53 - var s Settings 53 + s := make(map[string]Settings) 54 54 err = json.Unmarshal(data, &s) 55 55 if err != nil { 56 56 return nil, err 57 57 } 58 - s.AbsolutePaths(filepath.Dir(path)) 59 - return &s, nil 58 + for i := range s { 59 + set := s[i] 60 + set.AbsolutePaths(filepath.Dir(path)) 61 + s[i] = set 62 + } 63 + return s, nil 60 64 } 61 65 62 66 // AbsolutePaths makes all paths in settings absolute using the given