From 11149c0c9447908102f6d5cc644f8f1047d623c5 Mon Sep 17 00:00:00 2001 From: kingecg Date: Wed, 11 Jun 2025 00:14:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(server):=20=E6=B7=BB=E5=8A=A0=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E6=94=AF=E6=8C=81=E5=92=8C=E7=A4=BA?= =?UTF-8?q?=E4=BE=8B=E9=85=8D=E7=BD=AE=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 GenerateSampleConfig 函数用于生成示例配置文件 - 在 main 函数中添加配置文件路径和生成示例配置的命令行参数 - 实现配置文件加载逻辑,替代命令行参数 - 优化命令行参数默认值,如 NATS 服务器地址 --- cmd/server/config.go | 19 +++++++++++++++++++ cmd/server/main.go | 26 +++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/cmd/server/config.go b/cmd/server/config.go index c39c8fe..7a8447e 100644 --- a/cmd/server/config.go +++ b/cmd/server/config.go @@ -32,3 +32,22 @@ func LoadConfig(path string) (*Config, error) { 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) +} diff --git a/cmd/server/main.go b/cmd/server/main.go index 3ac16bf..00d6835 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -21,14 +21,38 @@ var ( restAddr = flag.String("rest-addr", ":8080", "REST API服务地址") wsAddr = flag.String("ws-addr", ":8081", "WebSocket服务地址") 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)") persistenceDir = flag.String("persistence-dir", "./data", "持久化目录") syncEvery = flag.Int("sync-every", 100, "每写入多少条数据同步一次") + configPath = flag.String("config", "config.yaml", "配置文件路径") + genSampleConfig = flag.Bool("gen-sample-config", false, "生成示例配置文件") ) func main() { + if *genSampleConfig { + err := GenerateSampleConfig("./config.yaml.sample") + if err != nil { + log.Fatalf("生成示例配置文件失败: %v", err) + } + log.Println("示例配置文件已生成") + return + } 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()