mirror of
https://github.com/oarkflow/mq.git
synced 2025-09-27 04:15:52 +08:00
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"flag"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
func loadConfiguration(configPath string) (*AppConfiguration, error) {
|
|
data, err := ioutil.ReadFile(configPath)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to read config file: %v", err)
|
|
}
|
|
|
|
var config AppConfiguration
|
|
if err := json.Unmarshal(data, &config); err != nil {
|
|
return nil, fmt.Errorf("failed to parse JSON config: %v", err)
|
|
}
|
|
|
|
return &config, nil
|
|
}
|
|
|
|
func main() {
|
|
// Parse command line flags
|
|
configPath := flag.String("config", "sms-app.json", "Path to JSON configuration file")
|
|
flag.Parse()
|
|
|
|
// If positional args provided, use the first one
|
|
if len(os.Args) > 1 && !flag.Parsed() {
|
|
*configPath = os.Args[1]
|
|
}
|
|
|
|
// Load configuration first
|
|
config, err := loadConfiguration(*configPath)
|
|
if err != nil {
|
|
log.Fatalf("Failed to load configuration: %v", err)
|
|
}
|
|
|
|
// Create JSON engine with configuration
|
|
engine := NewJSONEngine(config)
|
|
|
|
// Compile configuration
|
|
if err := engine.Compile(); err != nil {
|
|
log.Fatalf("Failed to compile configuration: %v", err)
|
|
}
|
|
|
|
// Start server
|
|
if err := engine.Start(); err != nil {
|
|
log.Fatalf("Failed to start server: %v", err)
|
|
}
|
|
}
|