fixed wait time function

This commit is contained in:
Niklas 2020-10-28 00:38:44 +01:00
parent fb8849322d
commit 1829422562

30
main.go
View File

@ -6,6 +6,7 @@ import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"log" "log"
"math"
"os" "os"
"os/exec" "os/exec"
"path" "path"
@ -116,24 +117,23 @@ func getTime(timeString string) (int, int) {
return int(hr), int(min) return int(hr), int(min)
} }
func getNextWait(config sunsetConfig) (int, int) { func getNextWait(config sunsetConfig) time.Duration {
index := nextIndex(config) index := nextIndex(config)
now := time.Now() now := time.Now()
nextHr, nextMin := getTime(config.Files[index].Time) nextHr, nextMin := getTime(config.Files[index].Time)
var diffHr int // Today at the time
var diffMin int nextTime := time.Date(now.Year(), now.Month(), now.Day(), nextHr, nextMin, 0, 0, now.Location())
// FIXME still not working until := nextTime.Sub(now)
if now.Hour() >= nextHr && now.Minute() >= nextMin {
diffHr = 24 - (now.Hour() - nextHr) if math.Floor(until.Minutes()) > 0 {
diffMin = 60 - (now.Minute() - nextMin) return until
} else {
diffHr = nextHr - now.Hour()
diffMin = nextMin - now.Minute()
} }
return diffHr, diffMin // Next day the the time
nextTime = nextTime.AddDate(0, 0, 1)
return nextTime.Sub(now)
} }
func currentImage(configPath string, config sunsetConfig) string { func currentImage(configPath string, config sunsetConfig) string {
@ -149,8 +149,8 @@ func block(configPath string, config sunsetConfig, command string) {
image := currentImage(configPath, config) image := currentImage(configPath, config)
go runCommand(command, image) go runCommand(command, image)
for { for {
nextHr, nextMin := getNextWait(config) until := getNextWait(config)
timer := time.NewTimer((time.Duration(nextHr) * time.Hour) + (time.Duration(nextMin) * time.Minute)) timer := time.NewTimer(until)
<-timer.C <-timer.C
log.Printf("Running command: %s\n", command) log.Printf("Running command: %s\n", command)
image := currentImage(configPath, config) image := currentImage(configPath, config)
@ -179,8 +179,8 @@ func main() {
if *printNextTime { if *printNextTime {
fmt.Printf("%s", getNextTime(conf)) fmt.Printf("%s", getNextTime(conf))
} else if *printNextWait { } else if *printNextWait {
hr, min := getNextWait(conf) unitl := getNextWait(conf)
fmt.Printf("%dh%dm", hr, min) fmt.Printf("%s", unitl)
} else if *blockFlag { } else if *blockFlag {
if *blockCommand == "" { if *blockCommand == "" {