func()

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
}