Update skip_file handling

* Update skip_file handling by using updated wild2regex to check files & paths of items to skip
This commit is contained in:
abraunegg 2018-07-10 12:36:58 +10:00
parent 57106a7b88
commit c333389528

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"]));