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()