60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"git.velvettear.de/velvettear/loggo"
|
|
)
|
|
|
|
var Interval time.Duration
|
|
var Directory string
|
|
var Resolution string
|
|
|
|
// initialize the config
|
|
func Initialize() {
|
|
loggo.SetLogLevelByName(os.Getenv("SLIDESHOW_LOGLEVEL"))
|
|
tmp, _ := strconv.Atoi(os.Getenv("SLIDESHOW_INTERVAL"))
|
|
if tmp <= 0 {
|
|
tmp = 60
|
|
}
|
|
Interval = time.Duration(tmp) * time.Second
|
|
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")
|
|
}
|
|
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 + "'")
|
|
}
|
|
return
|
|
}
|
|
}
|
|
|
|
// check if a resolution has been specified
|
|
func IsResolutionSet() bool {
|
|
return len(Resolution) > 0
|
|
}
|