50 lines
863 B
Go
50 lines
863 B
Go
|
|
package configstore
|
||
|
|
|
||
|
|
import (
|
||
|
|
"errors"
|
||
|
|
"os"
|
||
|
|
"path/filepath"
|
||
|
|
|
||
|
|
picoclawconfig "github.com/sipeed/picoclaw/pkg/config"
|
||
|
|
)
|
||
|
|
|
||
|
|
const (
|
||
|
|
configDirName = ".picoclaw"
|
||
|
|
configFileName = "config.json"
|
||
|
|
)
|
||
|
|
|
||
|
|
func ConfigPath() (string, error) {
|
||
|
|
dir, err := ConfigDir()
|
||
|
|
if err != nil {
|
||
|
|
return "", err
|
||
|
|
}
|
||
|
|
return filepath.Join(dir, configFileName), nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func ConfigDir() (string, error) {
|
||
|
|
home, err := os.UserHomeDir()
|
||
|
|
if err != nil {
|
||
|
|
return "", err
|
||
|
|
}
|
||
|
|
return filepath.Join(home, configDirName), nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func Load() (*picoclawconfig.Config, error) {
|
||
|
|
path, err := ConfigPath()
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return picoclawconfig.LoadConfig(path)
|
||
|
|
}
|
||
|
|
|
||
|
|
func Save(cfg *picoclawconfig.Config) error {
|
||
|
|
if cfg == nil {
|
||
|
|
return errors.New("config is nil")
|
||
|
|
}
|
||
|
|
path, err := ConfigPath()
|
||
|
|
if err != nil {
|
||
|
|
return err
|
||
|
|
}
|
||
|
|
return picoclawconfig.SaveConfig(path, cfg)
|
||
|
|
}
|