navidrome/conf/configuration.go

76 lines
1.5 KiB
Go
Raw Normal View History

2016-03-30 06:05:57 +02:00
package conf
import (
"fmt"
"os"
"github.com/koding/multiconfig"
)
2017-04-01 15:47:14 +02:00
type sonic struct {
Port string `default:"4533"`
2016-03-30 06:05:57 +02:00
MusicFolder string `default:"./iTunes1.xml"`
DbPath string `default:"./devDb"`
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]([)"`
2020-01-11 19:03:31 +01:00
User string `default:"anyone"`
Password string `default:"wordpass"`
2016-03-30 06:05:57 +02:00
DisableDownsampling bool `default:"false"`
DownsampleCommand string `default:"ffmpeg -i %s -map 0:0 -b:a %bk -v 0 -f mp3 -"`
PlsIgnoreFolders bool `default:"true"`
PlsIgnoredPatterns string `default:"^iCloud;\\~"`
// DevFlags
DevDisableAuthentication bool `default:"false"`
DevDisableFileCheck bool `default:"false"`
2016-03-30 06:05:57 +02:00
}
2017-04-01 15:47:14 +02:00
var Sonic *sonic
2016-03-30 06:05:57 +02:00
func LoadFromFlags() {
l := &multiconfig.FlagLoader{}
2017-04-01 15:47:14 +02:00
l.Load(Sonic)
2016-03-30 06:05:57 +02:00
}
2020-01-08 16:25:23 +01:00
func LoadFromEnv() {
port := os.Getenv("PORT")
if port != "" {
Sonic.Port = port
}
l := &multiconfig.EnvironmentLoader{}
l.Load(Sonic)
}
func LoadFromTags() {
l := &multiconfig.TagLoader{}
l.Load(Sonic)
}
2016-03-30 06:05:57 +02:00
func LoadFromFile(tomlFile string) {
l := &multiconfig.TOMLLoader{Path: tomlFile}
2017-04-01 15:47:14 +02:00
err := l.Load(Sonic)
2016-03-30 06:05:57 +02:00
if err != nil {
fmt.Printf("Error loading %s: %v\n", tomlFile, err)
}
}
func LoadFromLocalFile() {
2017-04-01 15:47:14 +02:00
if _, err := os.Stat("./sonic.toml"); err == nil {
LoadFromFile("./sonic.toml")
2016-03-30 06:05:57 +02:00
}
}
2020-01-08 16:25:23 +01:00
func Load() {
LoadFromLocalFile()
LoadFromEnv()
LoadFromFlags()
}
2016-03-30 06:05:57 +02:00
func init() {
2017-04-01 15:47:14 +02:00
Sonic = new(sonic)
2020-01-08 16:25:23 +01:00
LoadFromTags()
2016-03-30 06:05:57 +02:00
}