From aadfc2beca357f7ce03fea0e90f045b74f137cc8 Mon Sep 17 00:00:00 2001 From: l3uddz Date: Tue, 28 Apr 2020 00:42:58 +0100 Subject: [PATCH] change(rclone): build --filter based on include/excludes set on the check --- rclone/filter.go | 26 ++++++++++++++++++++++++++ uploader/checker/age.go | 11 ++--------- uploader/checker/size.go | 16 ++-------------- 3 files changed, 30 insertions(+), 23 deletions(-) create mode 100644 rclone/filter.go diff --git a/rclone/filter.go b/rclone/filter.go new file mode 100644 index 0000000..59a3101 --- /dev/null +++ b/rclone/filter.go @@ -0,0 +1,26 @@ +package rclone + +import "fmt" + +func IncludeExcludeToFilters(includes []string, excludes []string) []string { + params := make([]string, 0) + + // add excludes + if len(excludes) > 0 { + for _, exclude := range excludes { + params = append(params, "--filter", fmt.Sprintf("- %s", exclude)) + } + } + + // were there includes? + if len(includes) > 0 { + for _, include := range includes { + params = append(params, "--filter", fmt.Sprintf("+ %s", include)) + } + + // includes need the below, see: https://forum.rclone.org/t/filter-or-include-exclude-help-needed/10890/2 + params = append(params, "--filter", "- *") + } + + return params +} diff --git a/uploader/checker/age.go b/uploader/checker/age.go index 2fd42dd..5b9cab1 100644 --- a/uploader/checker/age.go +++ b/uploader/checker/age.go @@ -5,6 +5,7 @@ import ( "github.com/dustin/go-humanize" "github.com/l3uddz/crop/config" "github.com/l3uddz/crop/pathutils" + "github.com/l3uddz/crop/rclone" "github.com/sirupsen/logrus" "time" ) @@ -69,15 +70,7 @@ func (Age) RcloneParams(cfg *config.UploaderCheck, log *logrus.Entry) []string { } // add filters - for _, include := range cfg.Include { - params = append(params, - "--include", include) - } - - for _, exclude := range cfg.Exclude { - params = append(params, - "--exclude", exclude) - } + params = append(params, rclone.IncludeExcludeToFilters(cfg.Include, cfg.Exclude)...) return params } diff --git a/uploader/checker/size.go b/uploader/checker/size.go index de38797..47c0a81 100644 --- a/uploader/checker/size.go +++ b/uploader/checker/size.go @@ -4,6 +4,7 @@ import ( "github.com/dustin/go-humanize" "github.com/l3uddz/crop/config" "github.com/l3uddz/crop/pathutils" + "github.com/l3uddz/crop/rclone" "github.com/sirupsen/logrus" ) @@ -33,18 +34,5 @@ func (Size) CheckFile(cfg *config.UploaderCheck, log *logrus.Entry, path pathuti } func (Size) RcloneParams(cfg *config.UploaderCheck, log *logrus.Entry) []string { - params := make([]string, 0) - - // add filters - for _, include := range cfg.Include { - params = append(params, - "--include", include) - } - - for _, exclude := range cfg.Exclude { - params = append(params, - "--exclude", exclude) - } - - return params + return rclone.IncludeExcludeToFilters(cfg.Include, cfg.Exclude) }