in util/util.go [46:78]
func (w *Writer) SyncWriteJSONFile(obj interface{}) error {
w.lock.Lock()
defer w.lock.Unlock()
file, err := w.CreateFileIfNotExist()
if err != nil {
return err
}
defer file.Close() // file is opened, must close
content, jsonErr := json.MarshalIndent(obj, "", "\t")
if jsonErr != nil {
return jsonErr
}
// Making sure repeated writes will actually clear the file before each write
err = file.Truncate(0)
if err != nil {
return err
}
_, err = file.Seek(0, 0)
if err != nil {
return err
}
_, writeErr := file.Write(content)
if writeErr != nil {
return writeErr
}
syncErr := file.Sync() // flushing to disk
if syncErr != nil {
return syncErr
}
return nil
}