Fix: skip_file configuration doesn't handle spaces or specified directory paths (Issue #52) (#57)

* Update skip_file handling by using updated wild2regex to check files & paths of items to skip ro resolve issue #52
This commit is contained in:
abraunegg 2018-07-10 13:08:17 +10:00 committed by GitHub
parent 4667ecad12
commit c0d2874ace
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 1 deletions

View file

@ -39,7 +39,7 @@ final class SelectiveSync
// config sync_list file handling
bool isPathExcluded(string path)
{
return .isPathExcluded(path, paths);
return .isPathExcluded(path, paths) || .isPathMatched(path, mask);
}
}
@ -67,6 +67,24 @@ private bool isPathExcluded(string path, string[] allowedPaths)
return true;
}
// test if the given path is matched by the regex expression.
// recursively test up the tree.
private bool isPathMatched(string path, Regex!char mask) {
path = buildNormalizedPath(path);
auto paths = pathSplitter(path);
string prefix = "";
foreach(base; paths) {
prefix ~= base;
if (!path.matchFirst(mask).empty) {
// the given path matches something which we should skip
return true;
}
prefix ~= dirSeparator;
}
return false;
}
unittest
{
assert(isPathExcluded("Documents2", ["Documents"]));

View file

@ -99,7 +99,13 @@ Regex!char wild2regex(const(char)[] pattern)
break;
case '+':
str ~= "\\+";
break;
case ' ':
str ~= "\\s+";
break;
case '/':
str ~= "\\/";
break;
default:
str ~= c;
break;