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
|
||||
}
|
||||
|
||||
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服务地址")
|
||||
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()
|
||||
|
|
Loading…
Reference in New Issue