diff --git a/config.go b/config.go index 981c4e9..70dedc1 100644 --- a/config.go +++ b/config.go @@ -48,6 +48,7 @@ func (c *config) dump() ([]byte, error) { if err = json.Indent(&out, b, "", " "); err != nil { return nil, err } + out.WriteByte('\n') return out.Bytes(), nil } diff --git a/demo/config.json b/demo/config.json new file mode 100644 index 0000000..1bc4ab9 --- /dev/null +++ b/demo/config.json @@ -0,0 +1,14 @@ +{ + "app_name": "", + "build_number": 0, + "enable_sign_in": false, + "database_driver": "", + "database_config": { + "hostname": "", + "port": 0, + "username": "", + "password": "", + "database": "" + }, + "sensitive_data": "" +} diff --git a/manager.go b/manager.go index ff3cf8e..afe878c 100644 --- a/manager.go +++ b/manager.go @@ -33,10 +33,15 @@ func New(conf interface{}) *Manager { path: configPath, }, } + mgr.bootstrap() return mgr } +func (m *Manager) Config() interface{} { + return m.conf.config +} + func (m *Manager) StartServer() { srv := &server{ manager: m, @@ -44,3 +49,27 @@ func (m *Manager) StartServer() { } srv.start() } + +func (m *Manager) bootstrap() { + if m.file.isExist() { + b, err := m.file.read() + if err != nil { + panic(err) + } + + err = m.conf.load(b) + if err != nil { + panic(err) + } + } else { + b, err := m.conf.dump() + if err != nil { + panic(err) + } + + err = m.file.write(b) + if err != nil { + panic(err) + } + } +}