From 6efcce07b7dacfdfbd7f2ce33fe27f05119626d9 Mon Sep 17 00:00:00 2001 From: cupcakearmy Date: Fri, 23 Apr 2021 23:53:57 +0200 Subject: [PATCH] show error and exit with bad code if not found --- cmd/backup.go | 13 ++++++++++++- internal/backend.go | 15 ++++++++------- internal/location.go | 12 ++++++------ 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/cmd/backup.go b/cmd/backup.go index 3672bde..d9c67f0 100644 --- a/cmd/backup.go +++ b/cmd/backup.go @@ -1,7 +1,10 @@ package cmd import ( + "fmt" + "github.com/cupcakearmy/autorestic/internal" + "github.com/cupcakearmy/autorestic/internal/colors" "github.com/cupcakearmy/autorestic/internal/lock" "github.com/spf13/cobra" ) @@ -18,9 +21,17 @@ var backupCmd = &cobra.Command{ selected, err := internal.GetAllOrSelected(cmd, false) CheckErr(err) + errors := 0 for _, name := range selected { location, _ := internal.GetLocation(name) - location.Backup(false) + err := location.Backup(false) + if err != nil { + colors.Error.Println(err) + errors++ + } + } + if errors > 0 { + CheckErr(fmt.Errorf("%d errors were found", errors)) } }, } diff --git a/internal/backend.go b/internal/backend.go index 50199e8..1d978c8 100644 --- a/internal/backend.go +++ b/internal/backend.go @@ -121,16 +121,20 @@ func (b Backend) Exec(args []string) error { } options := ExecuteOptions{Envs: env} out, err := ExecuteResticCommand(options, args...) + if err != nil { + colors.Error.Println(out) + return err + } if VERBOSE { colors.Faint.Println(out) } - return err + return nil } -func (b Backend) ExecDocker(l Location, args []string) error { +func (b Backend) ExecDocker(l Location, args []string) (string, error) { env, err := b.getEnv() if err != nil { - return err + return "", err } volume := l.getVolumeName() path, _ := l.getPath() @@ -157,8 +161,5 @@ func (b Backend) ExecDocker(l Location, args []string) error { } docker = append(docker, "restic/restic", "-c", "restic "+strings.Join(args, " ")) out, err := ExecuteCommand(options, docker...) - if VERBOSE { - colors.Faint.Println(out) - } - return err + return out, err } diff --git a/internal/location.go b/internal/location.go index 61510d5..3c0b7e4 100644 --- a/internal/location.go +++ b/internal/location.go @@ -161,16 +161,16 @@ func (l Location) Backup(cron bool) error { switch t { case TypeLocal: out, err = ExecuteResticCommand(backupOptions, cmd...) - if VERBOSE { - colors.Faint.Println(out) - } case TypeVolume: - err = backend.ExecDocker(l, cmd) + out, err = backend.ExecDocker(l, cmd) } - if err != nil { + colors.Error.Println(out) return err } + if VERBOSE { + colors.Faint.Println(out) + } } // After hooks @@ -271,7 +271,7 @@ func (l Location) Restore(to, from string, force bool) error { } err = backend.Exec([]string{"restore", "--target", to, "--path", path, "latest"}) case TypeVolume: - err = backend.ExecDocker(l, []string{"restore", "--target", ".", "--path", path, "latest"}) + _, err = backend.ExecDocker(l, []string{"restore", "--target", ".", "--path", path, "latest"}) } if err != nil { return err