navidrome/conf/configuration.go

82 lines
1.9 KiB
Go
Raw Normal View History

2016-03-30 06:05:57 +02:00
package conf
import (
"os"
2020-01-24 01:44:08 +01:00
"github.com/deluan/navidrome/consts"
"github.com/deluan/navidrome/log"
2016-03-30 06:05:57 +02:00
"github.com/koding/multiconfig"
)
2020-01-24 07:29:31 +01:00
type nd struct {
Port string `default:"4533"`
MusicFolder string `default:"./music"`
2020-01-24 01:44:08 +01:00
DbPath string `default:"./data/navidrome.db"`
LogLevel string `default:"info"`
2016-03-30 06:05:57 +02:00
IgnoredArticles string `default:"The El La Los Las Le Les Os As O A"`
IndexGroups string `default:"A B C D E F G H I J K L M N O P Q R S T U V W X-Z(XYZ) [Unknown]([)"`
DisableDownsampling bool `default:"false"`
DownsampleCommand string `default:"ffmpeg -i %s -map 0:0 -b:a %bk -v 0 -f mp3 -"`
ProbeCommand string `default:"ffmpeg %s -f ffmetadata"`
PlsIgnoreFolders bool `default:"true"`
PlsIgnoredPatterns string `default:"^iCloud;\\~"`
ScanInterval string `default:"1m"`
// DevFlags. These are used to enable/disable debugging and incomplete features
DevDisableAuthentication bool `default:"false"`
2020-01-15 23:48:46 +01:00
DevDisableBanner bool `default:"false"`
DevInitialPassword string `default:""`
2016-03-30 06:05:57 +02:00
}
2020-01-24 07:29:31 +01:00
var Server *nd
2016-03-30 06:05:57 +02:00
func LoadFromFlags() {
l := &multiconfig.FlagLoader{}
2020-01-24 07:29:31 +01:00
l.Load(Server)
2016-03-30 06:05:57 +02:00
}
2020-01-08 16:25:23 +01:00
func LoadFromEnv() {
port := os.Getenv("PORT")
if port != "" {
2020-01-24 07:29:31 +01:00
Server.Port = port
2020-01-08 16:25:23 +01:00
}
l := &multiconfig.EnvironmentLoader{}
2020-01-24 07:29:31 +01:00
err := l.Load(Server)
2020-01-20 23:35:04 +01:00
if err != nil {
log.Error("Error parsing configuration from environment")
}
2020-01-08 16:25:23 +01:00
}
func LoadFromTags() {
l := &multiconfig.TagLoader{}
2020-01-24 07:29:31 +01:00
l.Load(Server)
2020-01-08 16:25:23 +01:00
}
2016-03-30 06:05:57 +02:00
func LoadFromFile(tomlFile string) {
l := &multiconfig.TOMLLoader{Path: tomlFile}
2020-01-24 07:29:31 +01:00
err := l.Load(Server)
2016-03-30 06:05:57 +02:00
if err != nil {
2020-01-15 17:02:27 +01:00
log.Error("Error loading configuration file", "file", tomlFile, err)
2016-03-30 06:05:57 +02:00
}
}
func LoadFromLocalFile() {
2020-01-24 01:44:08 +01:00
if _, err := os.Stat(consts.LocalConfigFile); err == nil {
LoadFromFile(consts.LocalConfigFile)
2016-03-30 06:05:57 +02:00
}
}
2020-01-08 16:25:23 +01:00
func Load() {
LoadFromLocalFile()
LoadFromEnv()
//LoadFromFlags()
2020-01-24 07:29:31 +01:00
log.SetLogLevelString(Server.LogLevel)
2020-01-08 16:25:23 +01:00
}
2016-03-30 06:05:57 +02:00
func init() {
2020-01-24 07:29:31 +01:00
Server = new(nd)
2020-01-08 16:25:23 +01:00
LoadFromTags()
2016-03-30 06:05:57 +02:00
}