package config import ( "runtime" fin "git.sharkk.net/Sharkk/Fin" ) // Config represents the current loaded configuration for the server type Config struct { Server struct { Port int Debug bool HTTPLogging bool StaticPrefix string } Runner struct { PoolSize int } Dirs struct { Routes string Static string FS string Data string Override string Libs []string } data *fin.Data } // NewConfig creates a new configuration with default values func New(data *fin.Data) *Config { config := &Config{ data: data, } config.Server.Port = data.GetOr("server.port", 3117).(int) config.Server.Debug = data.GetOr("server.debug", false).(bool) config.Server.HTTPLogging = data.GetOr("server.http_logging", true).(bool) config.Server.StaticPrefix = data.GetOr("server.static_prefix", "public").(string) config.Runner.PoolSize = data.GetOr("runner.pool_size", runtime.GOMAXPROCS(0)).(int) config.Dirs.Routes = data.GetOr("dirs.routes", "routes").(string) config.Dirs.Static = data.GetOr("dirs.static", "public").(string) config.Dirs.FS = data.GetOr("dirs.fs", "fs").(string) config.Dirs.Data = data.GetOr("dirs.data", "data").(string) config.Dirs.Override = data.GetOr("dirs.override", "override").(string) config.Dirs.Libs = data.GetOr("dirs.libs", []string{"libs"}).([]string) return config }