forked from qt-creator/qt-creator
Docker: Use new FileFilter::asFindArguments function
Change-Id: I7a4e02740f27cdb72d3a876985b0941ffedc1ff2 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -902,77 +902,8 @@ void DockerDevice::iterateWithFind(const FilePath &filePath,
|
||||
QTC_ASSERT(callBack, return);
|
||||
QTC_CHECK(filePath.isAbsolutePath());
|
||||
QStringList arguments{filePath.path()};
|
||||
arguments << filter.asFindArguments();
|
||||
|
||||
const QDir::Filters filters = filter.fileFilters;
|
||||
if (filters & QDir::NoSymLinks)
|
||||
arguments.prepend("-H");
|
||||
else
|
||||
arguments.prepend("-L");
|
||||
|
||||
arguments.append({"-mindepth", "1"});
|
||||
|
||||
if (!filter.iteratorFlags.testFlag(QDirIterator::Subdirectories))
|
||||
arguments.append({"-maxdepth", "1"});
|
||||
|
||||
QStringList filterOptions;
|
||||
|
||||
if (!(filters & QDir::Hidden))
|
||||
filterOptions << "!" << "-name" << ".*";
|
||||
|
||||
QStringList filterFilesAndDirs;
|
||||
if (filters & QDir::Dirs)
|
||||
filterFilesAndDirs << "-type" << "d";
|
||||
if (filters & QDir::Files) {
|
||||
if (!filterFilesAndDirs.isEmpty())
|
||||
filterFilesAndDirs << "-o";
|
||||
filterFilesAndDirs << "-type" << "f";
|
||||
}
|
||||
if (!filterFilesAndDirs.isEmpty())
|
||||
filterOptions << "(" << filterFilesAndDirs << ")";
|
||||
|
||||
QStringList accessOptions;
|
||||
if (filters & QDir::Readable)
|
||||
accessOptions << "-readable";
|
||||
if (filters & QDir::Writable) {
|
||||
if (!accessOptions.isEmpty())
|
||||
accessOptions << "-o";
|
||||
accessOptions << "-writable";
|
||||
}
|
||||
if (filters & QDir::Executable) {
|
||||
if (!accessOptions.isEmpty())
|
||||
accessOptions << "-o";
|
||||
accessOptions << "-executable";
|
||||
}
|
||||
|
||||
if (!accessOptions.isEmpty())
|
||||
filterOptions << "(" << accessOptions << ")";
|
||||
|
||||
QTC_CHECK(filters ^ QDir::AllDirs);
|
||||
QTC_CHECK(filters ^ QDir::Drives);
|
||||
QTC_CHECK(filters ^ QDir::NoDot);
|
||||
QTC_CHECK(filters ^ QDir::NoDotDot);
|
||||
QTC_CHECK(filters ^ QDir::Hidden);
|
||||
QTC_CHECK(filters ^ QDir::System);
|
||||
|
||||
const QString nameOption = (filters & QDir::CaseSensitive) ? QString{"-name"}
|
||||
: QString{"-iname"};
|
||||
if (!filter.nameFilters.isEmpty()) {
|
||||
const QRegularExpression oneChar("\\[.*?\\]");
|
||||
bool addedFirst = false;
|
||||
for (const QString ¤t : filter.nameFilters) {
|
||||
if (current.indexOf(oneChar) != -1) {
|
||||
qCDebug(dockerDeviceLog)
|
||||
<< "Skipped" << current << "due to presence of [] wildcard";
|
||||
continue;
|
||||
}
|
||||
|
||||
if (addedFirst)
|
||||
filterOptions << "-o";
|
||||
filterOptions << nameOption << current;
|
||||
addedFirst = true;
|
||||
}
|
||||
}
|
||||
arguments << filterOptions;
|
||||
const QByteArray output = d->outputForRunInShell({"find", arguments});
|
||||
const QString out = QString::fromUtf8(output.data(), output.size());
|
||||
if (!output.isEmpty() && !out.startsWith(filePath.path())) { // missing find, unknown option
|
||||
|
||||
Reference in New Issue
Block a user