slideshow/internal/config/config.go

86 lines
2.2 KiB
Go
Raw Normal View History

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
var ScanInterval time.Duration
2023-11-16 15:26:24 +01:00
var Resolution string
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"))
tmpInt, _ := strconv.Atoi(os.Getenv("SLIDESHOW_INTERVAL"))
if tmpInt <= 0 {
tmpInt = 60
2023-11-16 15:26:24 +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")
}
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 + "'")
}
}
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
}
// check if a resolution has been specified
func IsResolutionSet() bool {
return len(Resolution) > 0
}
2023-11-20 16:48:18 +01:00
// check if a color palette should be generated
2023-11-20 16:48:18 +01:00
func IsPaletteSet() bool {
return len(PaletteFile) > 0
2023-11-20 16:48:18 +01:00
}