2023-11-16 15:26:24 +01:00
|
|
|
package config
|
|
|
|
|
|
|
|
import (
|
|
|
|
"os"
|
|
|
|
"strconv"
|
|
|
|
"strings"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"git.velvettear.de/velvettear/loggo"
|
|
|
|
)
|
|
|
|
|
|
|
|
var Interval time.Duration
|
|
|
|
var Directory string
|
2023-11-23 16:57:43 +01:00
|
|
|
var ScanInterval time.Duration
|
2023-11-16 15:26:24 +01:00
|
|
|
var Resolution string
|
2023-11-21 16:48:32 +01:00
|
|
|
var PaletteFile string
|
|
|
|
var PaletteAlgorithm int
|
|
|
|
var PaletteColors int
|
2023-11-16 15:26:24 +01:00
|
|
|
|
|
|
|
// initialize the config
|
|
|
|
func Initialize() {
|
|
|
|
loggo.SetLogLevelByName(os.Getenv("SLIDESHOW_LOGLEVEL"))
|
2023-11-21 16:48:32 +01:00
|
|
|
tmpInt, _ := strconv.Atoi(os.Getenv("SLIDESHOW_INTERVAL"))
|
|
|
|
if tmpInt <= 0 {
|
|
|
|
tmpInt = 60
|
2023-11-16 15:26:24 +01:00
|
|
|
}
|
2023-11-21 16:48:32 +01:00
|
|
|
Interval = time.Duration(tmpInt) * time.Second
|
2023-11-16 15:26:24 +01:00
|
|
|
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")
|
|
|
|
}
|
2023-11-23 16:57:43 +01:00
|
|
|
tmpInt, _ = strconv.Atoi(os.Getenv("SLIDESHOW_SCANINTERVAL"))
|
|
|
|
if tmpInt <= 0 {
|
|
|
|
tmpInt = 60
|
|
|
|
}
|
|
|
|
ScanInterval = time.Duration(tmpInt) * time.Second
|
2023-11-16 15:26:24 +01:00
|
|
|
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 + "'")
|
|
|
|
}
|
|
|
|
}
|
2023-11-21 16:48:32 +01:00
|
|
|
PaletteFile = os.Getenv("SLIDESHOW_PALETTE")
|
|
|
|
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
|
2023-11-16 15:26:24 +01:00
|
|
|
}
|
2023-11-17 13:09:17 +01:00
|
|
|
|
|
|
|
// check if a resolution has been specified
|
|
|
|
func IsResolutionSet() bool {
|
|
|
|
return len(Resolution) > 0
|
|
|
|
}
|
2023-11-20 16:48:18 +01:00
|
|
|
|
2023-11-21 16:48:32 +01:00
|
|
|
// check if a color palette should be generated
|
2023-11-20 16:48:18 +01:00
|
|
|
func IsPaletteSet() bool {
|
2023-11-21 16:48:32 +01:00
|
|
|
return len(PaletteFile) > 0
|
2023-11-20 16:48:18 +01:00
|
|
|
}
|