-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
65 lines (59 loc) · 1.58 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
import (
"flag"
"os"
"time"
"github.com/NCRoxas/clex/run"
"github.com/NCRoxas/clex/util"
"github.com/go-co-op/gocron"
"github.com/rs/zerolog"
"github.com/rs/zerolog/log"
)
func main() {
s := gocron.NewScheduler(time.UTC)
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
interval := flag.String(
"interval",
"once",
"Set interval of cleanup job. Choices are: once, daily, weekly, monthly",
)
runAt := flag.String("time", "05:00", "Set time when to run cleanup job")
flag.Parse()
if *interval == "daily" {
log.Info().Str("Time", *runAt).Msg("Running daily cleanup job at")
s.Every(1).Day().At(*runAt).Do(job)
}
if *interval == "weekly" {
log.Info().Str("Time", *runAt).Str("Day", "Monday").Msg("Running weekly cleanup job at")
s.Every(1).Week().Monday().At(*runAt).Do(job)
}
if *interval == "monthly" {
log.Info().Str("Time", *runAt).Str("Day", "Monday").Msg("Running monthly cleanup job at")
s.MonthFirstWeekday(time.Monday).At(*runAt).Do(job)
}
if *interval == "once" {
job()
} else {
s.StartBlocking()
}
}
func job() {
var c util.Config
sonarr, radarr, err := c.InitConfig()
if err != nil {
log.Fatal().Err(err).Msg("Failed to initialize config")
}
c.PlexVerify()
watchedMovies, watchedSeries := run.ScanMedia(&c)
if radarr != nil {
run.QueueMovies(radarr, watchedMovies, &c)
} else {
log.Info().Msg("Radarr is not enabled. Skipping...")
}
if sonarr != nil {
run.QueueSeries(sonarr, watchedSeries, &c)
} else {
log.Info().Msg("Sonarr is not enabled. Skipping...")
}
}