From 351f87138c4cccc3f3ad56c5a63bf105c021f5b5 Mon Sep 17 00:00:00 2001 From: theandrew168 Date: Sat, 11 May 2024 15:55:34 -0500 Subject: [PATCH] Simplify main/run error handling --- main.go | 59 +++++++++++++++++++++++---------------------------------- 1 file changed, 24 insertions(+), 35 deletions(-) diff --git a/main.go b/main.go index 63ce0ee..99d4ece 100644 --- a/main.go +++ b/main.go @@ -20,23 +20,29 @@ import ( ) func main() { - os.Exit(run()) + code := 0 + + err := run() + if err != nil { + fmt.Println(err) + code = 1 + } + + os.Exit(code) } -func run() int { +func run() error { conf := flag.String("conf", "pg2s3.conf", "pg2s3 config file") flag.Parse() cfg, err := config.ReadFile(*conf) if err != nil { - fmt.Println(err) - return 1 + return err } client, err := pg2s3.NewClient(cfg) if err != nil { - fmt.Println(err) - return 1 + return err } // check for action (default run) @@ -50,72 +56,56 @@ func run() int { // backup: create a new backup if action == "backup" { - err = backup(client, cfg) - if err != nil { - fmt.Println(err) - return 1 - } - - return 0 + return backup(client, cfg) } // restore: restore the most recent backup if action == "restore" { - err = restore(client, cfg) - if err != nil { - fmt.Println(err) - return 1 - } - - return 0 + return restore(client, cfg) } // prune: delete the oldest backups above the retention count if action == "prune" { - err = prune(client, cfg) - if err != nil { - fmt.Println(err) - return 1 - } - - return 0 + return prune(client, cfg) } if cfg.Backup.Schedule == "" { + // TODO: replace with logging fmt.Println("no backup schedule specified, exiting") - return 1 + return nil } s, err := gocron.NewScheduler( gocron.WithLocation(time.UTC), ) if err != nil { - fmt.Println(err) - return 1 + return err } _, err = s.NewJob( gocron.CronJob(cfg.Backup.Schedule, false), gocron.NewTask(func() { err := backup(client, cfg) if err != nil { + // TODO: replace with logging fmt.Println(err) return } err = prune(client, cfg) if err != nil { + // TODO: replace with logging fmt.Println(err) return } }), ) if err != nil { - fmt.Println(err) - return 1 + return err } // let systemd know that we are good to go (no-op if not using systemd) daemon.SdNotify(false, daemon.SdNotifyReady) + // TODO: replace with logging fmt.Printf("running on schedule: %s\n", cfg.Backup.Schedule) // create a context that cancels upon receiving an interrupt signal @@ -127,11 +117,10 @@ func run() int { <-ctx.Done() err = s.Shutdown() if err != nil { - fmt.Println(err) - return 1 + return err } - return 0 + return nil } func confirm(message string) bool {