1
0
Fork 0
hivemind/internal/config/node.go

41 lines
995 B
Go

package config
import (
"fmt"
"strings"
)
type LogLevel string
const (
LogLevelDebug LogLevel = "DEBUG"
LogLevelInfo LogLevel = "INFO"
LogLevelWarn LogLevel = "WARN"
LogLevelError LogLevel = "ERROR"
)
func (l *LogLevel) UnmarshalText(data []byte) error {
raw := strings.ToUpper(string(data))
switch LogLevel(raw) {
case LogLevelDebug, LogLevelInfo, LogLevelWarn, LogLevelError:
*l = LogLevel(raw)
return nil
default:
return fmt.Errorf("invalid log level: %q", data)
}
}
//go:generate -command roleconfig go run git.wzray.com/homelab/hivemind/internal/codegen/roleconfig
//go:generate roleconfig -name NodeConfig
type NodeConfig struct {
Hostname string `toml:"hostname"`
Address string `toml:"address"`
Port int `toml:"port"`
KeepaliveInterval int `toml:"keepalive_interval" gen:"positive"`
LogLevel LogLevel `toml:"log_level"`
BootstrapMaster string `toml:"bootstrap_master" gen:"no"`
ListenOn string `toml:"listen_on" gen:"ip"`
}