add regex matching to include/exclude filters

This commit is contained in:
Jeff Thompson
2017-09-12 13:47:35 -05:00
parent 554f63263f
commit b56d7dedba
5 changed files with 164 additions and 11 deletions

View File

@@ -67,7 +67,7 @@ func CreateSnapshotFromDirectory(id string, top string) (snapshot *Snapshot, ski
}
var patterns []string
patternFile, err := ioutil.ReadFile(path.Join(GetDuplicacyPreferencePath(), "filters"))
if err == nil {
for _, pattern := range strings.Split(string(patternFile), "\n") {
@@ -76,14 +76,25 @@ func CreateSnapshotFromDirectory(id string, top string) (snapshot *Snapshot, ski
continue
}
if pattern[0] != '+' && pattern[0] != '-' {
if pattern[0] == '#' {
continue
}
if IsUnspecifiedFilter(pattern) {
pattern = "+" + pattern
}
if pattern == "+" || pattern == "-" {
if IsEmptyFilter(pattern) {
continue
}
if strings.HasPrefix(pattern, "i:") || strings.HasPrefix(pattern, "e:") {
valid, err := IsValidRegex(pattern[2:])
if !valid || err != nil {
LOG_ERROR("SNAPSHOT_FILTER", "Invalid regular expression encountered for filter: \"%s\", error: %v", pattern, err)
}
}
patterns = append(patterns, pattern)
}