slideshow/internal/config/config.go

61 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
}