go/config/write.go

38 lines
577 B
Go

package config
import (
"bytes"
"fmt"
"io"
"os"
)
func (c *Config) Write(w io.Writer) error {
var buf bytes.Buffer
for k, v := range c.Values {
buf.WriteString(fmt.Sprintf("%s = %s\n", k, v))
}
_, err := w.Write(buf.Bytes())
return err
}
func (c *Config) WriteFile(filePath string) error {
filePathBak := fmt.Sprintf("%s.bak.tmp", filePath)
fd, err := os.OpenFile(filePathBak, os.O_CREATE|os.O_WRONLY, os.ModePerm)
if err != nil {
return err
}
err = c.Write(fd)
fd.Close()
if err != nil {
return err
}
return os.Rename(filePathBak, filePath)
}