diff --git a/cmd/restic/cmd_restore.go b/cmd/restic/cmd_restore.go index a711da4dd..7c056fdab 100644 --- a/cmd/restic/cmd_restore.go +++ b/cmd/restic/cmd_restore.go @@ -6,6 +6,7 @@ import ( "github.com/restic/restic/internal/filter" "github.com/restic/restic/internal/restic" "github.com/restic/restic/internal/restorer" + "strings" "github.com/spf13/cobra" ) @@ -62,6 +63,14 @@ func runRestore(opts RestoreOptions, gopts GlobalOptions, args []string) error { hasExcludes := len(opts.Exclude) > 0 || len(opts.InsensitiveExclude) > 0 hasIncludes := len(opts.Include) > 0 || len(opts.InsensitiveInclude) > 0 + for i, str := range opts.InsensitiveExclude { + opts.InsensitiveExclude[i] = strings.ToLower(str) + } + + for i, str := range opts.InsensitiveInclude { + opts.InsensitiveInclude[i] = strings.ToLower(str) + } + switch { case len(args) == 0: return errors.Fatal("no snapshot ID specified") @@ -131,7 +140,7 @@ func runRestore(opts RestoreOptions, gopts GlobalOptions, args []string) error { Warnf("error for exclude pattern: %v", err) } - matchedInsensitive, _, err := filter.InsensitiveList(opts.InsensitiveExclude, item) + matchedInsensitive, _, err := filter.List(opts.InsensitiveExclude, strings.ToLower(item)) if err != nil { Warnf("error for iexclude pattern: %v", err) } @@ -152,7 +161,7 @@ func runRestore(opts RestoreOptions, gopts GlobalOptions, args []string) error { Warnf("error for include pattern: %v", err) } - matchedInsensitive, childMayMatchInsensitive, err := filter.InsensitiveList(opts.InsensitiveInclude, item) + matchedInsensitive, childMayMatchInsensitive, err := filter.List(opts.InsensitiveInclude, strings.ToLower(item)) if err != nil { Warnf("error for iexclude pattern: %v", err) } diff --git a/internal/filter/filter.go b/internal/filter/filter.go index 71ae4817c..74deddb03 100644 --- a/internal/filter/filter.go +++ b/internal/filter/filter.go @@ -187,12 +187,3 @@ func List(patterns []string, str string) (matched bool, childMayMatch bool, err return matched, childMayMatch, nil } - -// InsensitiveList is the same as List but case insensitive. -func InsensitiveList(patterns []string, str string) (matched bool, childMayMatch bool, err error) { - str = strings.ToLower(str) - for index, path := range patterns { - patterns[index] = strings.ToLower(path) - } - return List(patterns, str) -} diff --git a/internal/filter/filter_test.go b/internal/filter/filter_test.go index 7be5dcb30..97df452fb 100644 --- a/internal/filter/filter_test.go +++ b/internal/filter/filter_test.go @@ -279,33 +279,6 @@ func ExampleList() { // match: true } -var filterInsensitiveListTests = []struct { - patterns []string - path string - match bool -}{ - {[]string{"*.go"}, "/foo/bar/test.go", true}, - {[]string{"test.go"}, "/foo/bar/test.go", true}, - {[]string{"test.go"}, "/foo/bar/TEST.go", true}, - {[]string{"BAR"}, "/foo/BAR/TEST.go", true}, -} - -func TestInsensitiveList(t *testing.T) { - for i, test := range filterInsensitiveListTests { - match, _, err := filter.InsensitiveList(test.patterns, test.path) - if err != nil { - t.Errorf("test %d failed: expected no error for patterns %q, but error returned: %v", - i, test.patterns, err) - continue - } - - if match != test.match { - t.Errorf("test %d: filter.InsensitiveList(%q, %q): expected %v, got %v", - i, test.patterns, test.path, test.match, match) - } - } -} - func extractTestLines(t testing.TB) (lines []string) { f, err := os.Open("testdata/libreoffice.txt.bz2") if err != nil {