show error and exit with bad code if not found

This commit is contained in:
cupcakearmy 2021-04-23 23:53:57 +02:00
parent 40988ef3b4
commit 6efcce07b7
No known key found for this signature in database
GPG Key ID: D28129AE5654D9D9
3 changed files with 26 additions and 14 deletions

View File

@ -1,7 +1,10 @@
package cmd package cmd
import ( import (
"fmt"
"github.com/cupcakearmy/autorestic/internal" "github.com/cupcakearmy/autorestic/internal"
"github.com/cupcakearmy/autorestic/internal/colors"
"github.com/cupcakearmy/autorestic/internal/lock" "github.com/cupcakearmy/autorestic/internal/lock"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
@ -18,9 +21,17 @@ var backupCmd = &cobra.Command{
selected, err := internal.GetAllOrSelected(cmd, false) selected, err := internal.GetAllOrSelected(cmd, false)
CheckErr(err) CheckErr(err)
errors := 0
for _, name := range selected { for _, name := range selected {
location, _ := internal.GetLocation(name) 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))
} }
}, },
} }

View File

@ -121,16 +121,20 @@ func (b Backend) Exec(args []string) error {
} }
options := ExecuteOptions{Envs: env} options := ExecuteOptions{Envs: env}
out, err := ExecuteResticCommand(options, args...) out, err := ExecuteResticCommand(options, args...)
if err != nil {
colors.Error.Println(out)
return err
}
if VERBOSE { if VERBOSE {
colors.Faint.Println(out) 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() env, err := b.getEnv()
if err != nil { if err != nil {
return err return "", err
} }
volume := l.getVolumeName() volume := l.getVolumeName()
path, _ := l.getPath() 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, " ")) docker = append(docker, "restic/restic", "-c", "restic "+strings.Join(args, " "))
out, err := ExecuteCommand(options, docker...) out, err := ExecuteCommand(options, docker...)
if VERBOSE { return out, err
colors.Faint.Println(out)
}
return err
} }

View File

@ -161,16 +161,16 @@ func (l Location) Backup(cron bool) error {
switch t { switch t {
case TypeLocal: case TypeLocal:
out, err = ExecuteResticCommand(backupOptions, cmd...) out, err = ExecuteResticCommand(backupOptions, cmd...)
case TypeVolume:
out, err = backend.ExecDocker(l, cmd)
}
if err != nil {
colors.Error.Println(out)
return err
}
if VERBOSE { if VERBOSE {
colors.Faint.Println(out) colors.Faint.Println(out)
} }
case TypeVolume:
err = backend.ExecDocker(l, cmd)
}
if err != nil {
return err
}
} }
// After hooks // 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"}) err = backend.Exec([]string{"restore", "--target", to, "--path", path, "latest"})
case TypeVolume: 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 { if err != nil {
return err return err