feat: add mode selecting (#15)
All checks were successful
CD / test (push) Successful in 44s
CD / Build and push (push) Successful in 3m5s

Co-authored-by: Timo Behrendt <t.behrendt@t00n.de>
Co-committed-by: Timo Behrendt <t.behrendt@t00n.de>
This commit was merged in pull request #15.
This commit is contained in:
2024-12-23 14:17:46 +01:00
committed by t.behrendt
parent e84a409d82
commit ac786f533d
14 changed files with 150 additions and 112 deletions

40
main.go
View File

@@ -2,9 +2,7 @@ package main
import (
"fmt"
"time"
"realdnydns/pkg/changeDetector"
"realdnydns/pkg/config"
"realdnydns/pkg/dnsProvider"
ionos "realdnydns/pkg/dnsProvider/ionos"
@@ -13,8 +11,7 @@ import (
"realdnydns/pkg/notificationProvider"
notificationProviderConsole "realdnydns/pkg/notificationProvider/console"
gotify "realdnydns/pkg/notificationProvider/gotify"
"github.com/go-co-op/gocron"
"realdnydns/pkg/realDynDns"
)
func main() {
@@ -71,27 +68,26 @@ func main() {
panic(err)
}
default:
// Use default console notification provider
notificationProvider = notificationProviderConsole.New()
}
changeDetector := changeDetector.New(externalIpProvider, dnsProvider, notificationProvider, configClient.Domains)
rdd := realDynDns.New(externalIpProvider, dnsProvider, notificationProvider, configClient.Domains)
s := gocron.NewScheduler(time.UTC)
s.SingletonMode()
job, err := s.CronWithSeconds(configClient.CheckInterval).DoWithJobDetails(func(job gocron.Job) {
numberChanged, err := changeDetector.DetectAndApplyChanges()
if err != nil {
panic(err)
}
fmt.Printf("Number of changes: %d\n", numberChanged)
fmt.Println("Next run:", job.NextRun())
})
if err != nil {
panic(err)
switch configClient.Mode {
case config.ScheduledMode:
schedule, job, err := rdd.RunWithSchedule(configClient.CheckInterval)
if err != nil {
panic(err)
}
fmt.Println("Starting scheduler")
fmt.Println("Next run:", job.NextRun())
schedule.StartBlocking()
case config.RunOnceMode:
numberOfChanges, err := rdd.RunOnce()
if err != nil {
panic(err)
}
fmt.Println("Number of changes:", numberOfChanges)
}
fmt.Println("Starting scheduler")
fmt.Println("Next run:", job.NextRun())
s.StartBlocking()
}