From 2dc27e62c5dff98b228a4a0fe26e323e162661c0 Mon Sep 17 00:00:00 2001 From: Gregory Eremin Date: Sat, 29 Aug 2015 19:50:22 +0300 Subject: [PATCH] Save indented JSON --- file_ops.go | 6 ++---- secondly.go | 26 +++++++++++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/file_ops.go b/file_ops.go index 963e318..8f8b2c1 100644 --- a/file_ops.go +++ b/file_ops.go @@ -29,10 +29,8 @@ func writeFile(file string, body []byte) error { if err = mkdirp(file); err != nil { return err } - if fd, err = os.Create(file); err != nil { - return err - } - } else if fd, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY, filePerm); err != nil { + } + if fd, err = os.OpenFile(file, os.O_TRUNC|os.O_WRONLY|os.O_CREATE, filePerm); err != nil { return err } defer fd.Close() diff --git a/secondly.go b/secondly.go index 8a68c59..d552ace 100644 --- a/secondly.go +++ b/secondly.go @@ -1,6 +1,7 @@ package secondly import ( + "bytes" "encoding/json" "flag" "fmt" @@ -122,11 +123,7 @@ func readConfig() { } func writeConfig() { - body, err := json.Marshal(config) - if err != nil { - panic(err) - } - if err = writeFile(configFile, body); err != nil { + if err := writeFile(configFile, marshal(config)); err != nil { panic(err) } } @@ -144,6 +141,25 @@ func updateConfig(body []byte) { config = dupe } +func marshal(obj interface{}) []byte { + body, err := json.Marshal(config) + if err != nil { + panic(err) + } + out := bytes.NewBuffer([]byte{}) + + // Indent with empty prefix and four spaces + if err = json.Indent(out, body, "", " "); err != nil { + panic(err) + } + + // Adding a trailing newline + // It's good for your carma + out.WriteByte('\n') + + return out.Bytes() +} + func triggerCallbacks(oldConf, newConf interface{}) { // Don't trigger callbacks on fist load if !initialized {