Moonshark/utils/config/config.go

56 lines
1.3 KiB
Go

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
}