81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
|
package config
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"strconv"
|
||
|
"strings"
|
||
|
"time"
|
||
|
|
||
|
"git.velvettear.de/velvettear/loggo"
|
||
|
)
|
||
|
|
||
|
var ServerAddress string
|
||
|
var ServerPort int
|
||
|
var Directory string
|
||
|
var ScanInterval time.Duration
|
||
|
var Resolution string
|
||
|
var PaletteAlgorithm int
|
||
|
var PaletteColors int
|
||
|
|
||
|
// initialize the config
|
||
|
func Initialize() {
|
||
|
loggo.SetLogLevelByName(os.Getenv("SLIDESHOW_LOGLEVEL"))
|
||
|
ServerAddress = os.Getenv("SLIDESHOW_ADDRESS")
|
||
|
tmpInt, _ := strconv.Atoi(os.Getenv("SLIDESHOW_PORT"))
|
||
|
if tmpInt <= 0 {
|
||
|
tmpInt = 3000
|
||
|
}
|
||
|
ServerPort = tmpInt
|
||
|
Directory = os.Getenv("SLIDESHOW_DIRECTORY")
|
||
|
if len(Directory) == 0 {
|
||
|
tmp, error := os.UserHomeDir()
|
||
|
if error != nil {
|
||
|
loggo.Fatal("encountered an error getting the current user's home directory", error.Error())
|
||
|
}
|
||
|
Directory = tmp
|
||
|
}
|
||
|
stats, error := os.Stat(Directory)
|
||
|
if error != nil {
|
||
|
loggo.Fatal("encountered an error checking the directory '"+Directory+"'", error.Error())
|
||
|
}
|
||
|
if !stats.IsDir() {
|
||
|
loggo.Fatal("configured directory '" + Directory + "' is not a valid directory")
|
||
|
}
|
||
|
tmpInt, _ = strconv.Atoi(os.Getenv("SLIDESHOW_SCANINTERVAL"))
|
||
|
if tmpInt <= 0 {
|
||
|
tmpInt = 60
|
||
|
}
|
||
|
ScanInterval = time.Duration(tmpInt) * time.Second
|
||
|
Resolution = os.Getenv("SLIDESHOW_RESOLUTION")
|
||
|
if len(Resolution) > 0 {
|
||
|
width, height, found := strings.Cut(Resolution, "x")
|
||
|
if !found {
|
||
|
loggo.Fatal("encountered an error parsing the configured resolution, make sure to specify the format like '1920x1080'")
|
||
|
}
|
||
|
_, error = strconv.Atoi(width)
|
||
|
if error != nil {
|
||
|
loggo.Fatal("encountered an error parsing the configured width '" + width + "'")
|
||
|
}
|
||
|
_, error = strconv.Atoi(height)
|
||
|
if error != nil {
|
||
|
loggo.Fatal("encountered an error parsing the configured height '" + height + "'")
|
||
|
}
|
||
|
}
|
||
|
tmpString := os.Getenv("SLIDESHOW_PALETTE_ALGORITHM")
|
||
|
if strings.ToLower(tmpString) == "wu" {
|
||
|
PaletteAlgorithm = 0
|
||
|
} else {
|
||
|
PaletteAlgorithm = 1
|
||
|
}
|
||
|
tmpInt, _ = strconv.Atoi(os.Getenv("SLIDESHOW_PALETTE_COLORS"))
|
||
|
if tmpInt <= 0 {
|
||
|
tmpInt = 16
|
||
|
}
|
||
|
PaletteColors = tmpInt
|
||
|
}
|
||
|
|
||
|
// check if a resolution has been specified
|
||
|
func IsResolutionSet() bool {
|
||
|
return len(Resolution) > 0
|
||
|
}
|