X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/00d1ef67636df59460bd4e060f6da4b0c9bcb24c..ba29c43bb23de83c7715271e0830cb9f00e9e1c1:/cmd/mobius-hotline-server/main.go diff --git a/cmd/mobius-hotline-server/main.go b/cmd/mobius-hotline-server/main.go index cf69ea8..60327a8 100644 --- a/cmd/mobius-hotline-server/main.go +++ b/cmd/mobius-hotline-server/main.go @@ -7,19 +7,23 @@ import ( "github.com/jhalter/mobius/hotline" "go.uber.org/zap" "go.uber.org/zap/zapcore" + "math/rand" "os" + "runtime" + "time" ) const ( - defaultConfigPath = "/usr/local/var/mobius/config/" // matches Homebrew default config location - defaultPort = 5500 + defaultPort = 5500 ) func main() { + rand.Seed(time.Now().UnixNano()) + ctx, cancelRoot := context.WithCancel(context.Background()) basePort := flag.Int("bind", defaultPort, "Bind address and port") - configDir := flag.String("config", defaultConfigPath, "Path to config root") + configDir := flag.String("config", defaultConfigPath(), "Path to config root") version := flag.Bool("version", false, "print version and exit") logLevel := flag.String("log-level", "info", "Log level") flag.Parse() @@ -44,9 +48,7 @@ func main() { logger.Fatalw("Configuration directory not found", "path", configDir) } - hotline.FS = hotline.OSFileStore{} - - srv, err := hotline.NewServer(*configDir, "", *basePort, logger) + srv, err := hotline.NewServer(*configDir, "", *basePort, logger, &hotline.OSFileStore{}) if err != nil { logger.Fatal(err) } @@ -73,3 +75,22 @@ var zapLogLevel = map[string]zapcore.Level{ "warn": zap.WarnLevel, "error": zap.ErrorLevel, } + +func defaultConfigPath() (cfgPath string) { + switch runtime.GOOS { + case "windows": + cfgPath = "config" + case "darwin": + if _, err := os.Stat("/usr/local/var/mobius/config/"); err == nil { + cfgPath = "/usr/local/var/mobius/config/" + } else if _, err := os.Stat("/opt/homebrew/var/mobius/config"); err == nil { + cfgPath = "/opt/homebrew/var/mobius/config/" + } + case "linux": + cfgPath = "/usr/local/var/mobius/config/" + default: + fmt.Printf("unsupported OS") + } + + return cfgPath +}