diff --git a/settings/settings.go b/settings/settings.go index d956e21..68691d9 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -1,6 +1,8 @@ package settings import ( + "os" + "gopkg.in/yaml.v2" ) @@ -30,7 +32,11 @@ type Resources struct { // Read from the configuration file func (s *Settings) Read(out interface{}) error { - content, err := s.Stream(s.Resources.Config) + localConfigPath := s.Resources.Config + if _, err := os.Stat(".realize/"); err == nil { + localConfigPath = ".realize/" + s.Resources.Config + } + content, err := s.Stream(localConfigPath) if err == nil { err = yaml.Unmarshal(content, out) return err @@ -39,10 +45,13 @@ func (s *Settings) Read(out interface{}) error { } // Record create and unmarshal the yaml config file -func (h *Settings) Record(out interface{}) error { +func (s *Settings) Record(out interface{}) error { y, err := yaml.Marshal(out) if err != nil { return err } - return h.Write(h.Resources.Config, y) + if _, err := os.Stat(".realize/"); os.IsNotExist(err) { + os.Mkdir(".realize", 0770) + } + return s.Write(".realize/"+s.Resources.Config, y) }