feat(server): 添加配置文件支持和示例配置生成
- 新增 GenerateSampleConfig 函数用于生成示例配置文件 - 在 main 函数中添加配置文件路径和生成示例配置的命令行参数 - 实现配置文件加载逻辑,替代命令行参数 - 优化命令行参数默认值,如 NATS 服务器地址
This commit is contained in:
parent
9682c51336
commit
11149c0c94
|
@ -32,3 +32,22 @@ func LoadConfig(path string) (*Config, error) {
|
||||||
|
|
||||||
return &config, nil
|
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)
|
||||||
|
}
|
||||||
|
|
|
@ -21,14 +21,38 @@ var (
|
||||||
restAddr = flag.String("rest-addr", ":8080", "REST API服务地址")
|
restAddr = flag.String("rest-addr", ":8080", "REST API服务地址")
|
||||||
wsAddr = flag.String("ws-addr", ":8081", "WebSocket服务地址")
|
wsAddr = flag.String("ws-addr", ":8081", "WebSocket服务地址")
|
||||||
metricsAddr = flag.String("metrics-addr", ":8082", "指标服务地址")
|
metricsAddr = flag.String("metrics-addr", ":8082", "指标服务地址")
|
||||||
natsURL = flag.String("nats-url", "nats://localhost:4222", "NATS服务器地址")
|
natsURL = flag.String("nats-url", "", "NATS服务器地址")
|
||||||
persistenceType = flag.String("persistence", "none", "持久化类型 (none, wal)")
|
persistenceType = flag.String("persistence", "none", "持久化类型 (none, wal)")
|
||||||
persistenceDir = flag.String("persistence-dir", "./data", "持久化目录")
|
persistenceDir = flag.String("persistence-dir", "./data", "持久化目录")
|
||||||
syncEvery = flag.Int("sync-every", 100, "每写入多少条数据同步一次")
|
syncEvery = flag.Int("sync-every", 100, "每写入多少条数据同步一次")
|
||||||
|
configPath = flag.String("config", "config.yaml", "配置文件路径")
|
||||||
|
genSampleConfig = flag.Bool("gen-sample-config", false, "生成示例配置文件")
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
if *genSampleConfig {
|
||||||
|
err := GenerateSampleConfig("./config.yaml.sample")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("生成示例配置文件失败: %v", err)
|
||||||
|
}
|
||||||
|
log.Println("示例配置文件已生成")
|
||||||
|
return
|
||||||
|
}
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
if *configPath != "" {
|
||||||
|
|
||||||
|
config, err := LoadConfig(*configPath)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to load config: %v", err)
|
||||||
|
}
|
||||||
|
restAddr = &config.RestAddr
|
||||||
|
wsAddr = &config.WsAddr
|
||||||
|
metricsAddr = &config.MetricsAddr
|
||||||
|
natsURL = &config.NATSURL
|
||||||
|
persistenceType = &config.PersistenceType
|
||||||
|
persistenceDir = &config.PersistenceDir
|
||||||
|
syncEvery = &config.SyncEvery
|
||||||
|
}
|
||||||
|
|
||||||
// 创建存储引擎
|
// 创建存储引擎
|
||||||
engine := storage.NewMemoryEngine()
|
engine := storage.NewMemoryEngine()
|
||||||
|
|
Loading…
Reference in New Issue