54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
// Config 应用程序配置结构
|
|
type Config struct {
|
|
RestAddr string `yaml:"rest_addr"`
|
|
WsAddr string `yaml:"ws_addr"`
|
|
MetricsAddr string `yaml:"metrics_addr"`
|
|
NATSURL string `yaml:"nats_url"`
|
|
PersistenceType string `yaml:"persistence_type"`
|
|
PersistenceDir string `yaml:"persistence_dir"`
|
|
SyncEvery int `yaml:"sync_every"`
|
|
}
|
|
|
|
func LoadConfig(path string) (*Config, error) {
|
|
file, err := os.Open(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer file.Close()
|
|
|
|
var config Config
|
|
decoder := yaml.NewDecoder(file)
|
|
if err := decoder.Decode(&config); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &config, nil
|
|
}
|
|
|
|
func GenerateSampleConfig(path string) error {
|
|
config := Config{
|
|
MetricsAddr: ":8082",
|
|
NATSURL: "nats://localhost:4222",
|
|
PersistenceDir: "./data",
|
|
PersistenceType: "memory",
|
|
RestAddr: ":8080",
|
|
SyncEvery: 1000,
|
|
WsAddr: ":8081",
|
|
}
|
|
// 序列化yaml到path
|
|
file, err := os.Create(path)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
return yaml.NewEncoder(file).Encode(config)
|
|
}
|