ls: proper error handling for non-existent snapshot

Use restic.FindFilteredSnapshot to resolve the snapshot ID. This ensures
consistent behavior for all commands using initSingleSnapshotFilterOptions.
This commit is contained in:
Michael Eischer 2022-10-03 13:05:36 +02:00
parent a81f0432e9
commit 0aa73bbd39

View file

@ -210,10 +210,18 @@ func runLs(ctx context.Context, opts LsOptions, gopts GlobalOptions, args []stri
} }
} }
for sn := range FindFilteredSnapshots(ctx, snapshotLister, repo, opts.Hosts, opts.Tags, opts.Paths, args[:1]) { id, err := restic.FindFilteredSnapshot(ctx, snapshotLister, repo, opts.Hosts, opts.Tags, opts.Paths, args[0])
if err != nil {
return err
}
sn, err := restic.LoadSnapshot(ctx, repo, id)
if err != nil {
return err
}
printSnapshot(sn) printSnapshot(sn)
err := walker.Walk(ctx, repo, *sn.Tree, nil, func(_ restic.ID, nodepath string, node *restic.Node, err error) (bool, error) { err = walker.Walk(ctx, repo, *sn.Tree, nil, func(_ restic.ID, nodepath string, node *restic.Node, err error) (bool, error) {
if err != nil { if err != nil {
return false, err return false, err
} }
@ -249,7 +257,6 @@ func runLs(ctx context.Context, opts LsOptions, gopts GlobalOptions, args []stri
if err != nil { if err != nil {
return err return err
} }
}
return nil return nil
} }