2022-02-18 22:36:19 +00:00
|
|
|
package main
|
|
|
|
|
2022-02-20 06:09:23 +00:00
|
|
|
import (
|
|
|
|
"flag"
|
|
|
|
"fmt"
|
|
|
|
"log"
|
|
|
|
|
|
|
|
"github.com/hashicorp/hcl/v2/hclsimple"
|
|
|
|
)
|
|
|
|
|
2022-02-18 22:36:19 +00:00
|
|
|
var (
|
2022-02-23 00:55:41 +00:00
|
|
|
// version of restic-scheduler being run.
|
2022-02-18 22:36:19 +00:00
|
|
|
version = "dev"
|
|
|
|
)
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
showVersion := flag.Bool("version", false, "Display the version of minitor and exit")
|
|
|
|
flag.Parse()
|
|
|
|
|
|
|
|
// Print version if flag is provided
|
|
|
|
if *showVersion {
|
|
|
|
fmt.Println("restic-scheduler version:", version)
|
|
|
|
|
|
|
|
return
|
|
|
|
}
|
2022-02-20 06:09:23 +00:00
|
|
|
|
|
|
|
var config Config
|
|
|
|
|
2022-02-23 00:39:01 +00:00
|
|
|
args := flag.Args()
|
|
|
|
if len(args) == 0 {
|
|
|
|
log.Fatalf("Requires a path to a job file, but found none")
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := hclsimple.DecodeFile(args[0], nil, &config); err != nil {
|
2022-02-20 06:09:23 +00:00
|
|
|
log.Fatalf("Failed to load configuration: %s", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
log.Printf("Configuration is %#v", config)
|
2022-02-23 00:39:01 +00:00
|
|
|
|
|
|
|
if len(config.Jobs) == 0 {
|
|
|
|
log.Fatalf("No jobs defined in config")
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, job := range config.Jobs {
|
|
|
|
if err := job.RunTasks(); err != nil {
|
|
|
|
log.Fatalf("%v", err)
|
|
|
|
}
|
|
|
|
}
|
2022-02-18 22:36:19 +00:00
|
|
|
}
|