mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 19:13:34 +00:00
46 lines
975 B
Go
46 lines
975 B
Go
package daemon
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
const (
|
|
DefaultDataDir = "/var/lib/uncloud"
|
|
MachineConfigPath = "machine.json"
|
|
)
|
|
|
|
type Config struct {
|
|
UncloudID string
|
|
UncloudSecret string
|
|
// IPv4 network in CIDR format to use for the machine network.
|
|
Network string
|
|
}
|
|
|
|
func ReadConfig(path string) (Config, error) {
|
|
data, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return Config{}, fmt.Errorf("read config file %q: %w", path, err)
|
|
}
|
|
var config Config
|
|
if err = json.Unmarshal(data, &config); err != nil {
|
|
return Config{}, fmt.Errorf("parse config file %q: %w", path, err)
|
|
}
|
|
return config, nil
|
|
}
|
|
|
|
func (c *Config) Write(path string) error {
|
|
dir, _ := filepath.Split(path)
|
|
if err := os.MkdirAll(dir, 0700); err != nil {
|
|
return fmt.Errorf("create config directory %q: %w", dir, err)
|
|
}
|
|
|
|
data, err := json.Marshal(c)
|
|
if err != nil {
|
|
return fmt.Errorf("marshal config: %w", err)
|
|
}
|
|
return os.WriteFile(path, data, 0600)
|
|
}
|