minimcd/config.go

58 lines
1.5 KiB
Go

package main
import (
"os"
"gopkg.in/yaml.v2"
)
type Config struct {
Timeout int `yaml:"timeout"` // minutes
StartCommand string `yaml:"start_command"`
Port string `yaml:"port"`
ConnectTimeout int `yaml:"connect_timeout"` //seconds
MCPort string `yaml:"mc_port"`
}
var defaultConfig = Config{
MCPort: "25565",
ConnectTimeout: 10,
Port: "4567",
Timeout: 1,
}
// this is a global constant since it's shared
var config = Config{}
const DEFAULT_VALUE_FMT_STR = "%s not found, default to %v"
func LoadConfig(filePath string) error {
data, err := os.ReadFile(filePath)
if err != nil {
GetLogger().Fatalf("Failed to read config file: %v", err)
return err
}
if err := yaml.Unmarshal(data, &config); err != nil {
GetLogger().Fatalf("Failed to unmarshal config: %v", err)
return err
}
GetLogger().Info("Configuration loaded successfully")
if config.MCPort == "" {
GetLogger().Warnf(DEFAULT_VALUE_FMT_STR, "MCPort", defaultConfig.MCPort)
config.MCPort = defaultConfig.MCPort
}
if config.ConnectTimeout == 0 {
GetLogger().Warnf(DEFAULT_VALUE_FMT_STR, "ConnectTimeout", defaultConfig.ConnectTimeout)
config.ConnectTimeout = defaultConfig.ConnectTimeout
}
if config.Port == "" {
GetLogger().Warnf(DEFAULT_VALUE_FMT_STR, "Port", defaultConfig.Port)
config.Port = defaultConfig.Port
}
if config.Timeout == 0 {
GetLogger().Warnf(DEFAULT_VALUE_FMT_STR, "Timeout", defaultConfig.Timeout)
config.Timeout = defaultConfig.Timeout
}
return nil
}