49 lines
816 B
Go
49 lines
816 B
Go
|
package user
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
"os"
|
||
|
"path"
|
||
|
|
||
|
"github.com/mitchellh/go-homedir"
|
||
|
)
|
||
|
|
||
|
func ReadUserConfig(appName, configName string, config interface{}) error {
|
||
|
dir, err := homedir.Dir()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
filePath := path.Join(dir, ".config", appName, configName)
|
||
|
|
||
|
data, err := os.ReadFile(filePath)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
return json.Unmarshal(data, config)
|
||
|
}
|
||
|
|
||
|
func WriteUserConfig(appName, configName string, config interface{}) error {
|
||
|
dir, err := homedir.Dir()
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
data, err := json.Marshal(config)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
filePath := path.Join(dir, ".config", appName)
|
||
|
|
||
|
err = os.MkdirAll(filePath, 0700)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
|
||
|
filePath = path.Join(filePath, configName)
|
||
|
|
||
|
return os.WriteFile(filePath, data, 0700)
|
||
|
}
|