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_ASSERT(callBack, return);
|
||||||
QTC_CHECK(filePath.isAbsolutePath());
|
QTC_CHECK(filePath.isAbsolutePath());
|
||||||
QStringList arguments{filePath.path()};
|
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 QByteArray output = d->outputForRunInShell({"find", arguments});
|
||||||
const QString out = QString::fromUtf8(output.data(), output.size());
|
const QString out = QString::fromUtf8(output.data(), output.size());
|
||||||
if (!output.isEmpty() && !out.startsWith(filePath.path())) { // missing find, unknown option
|
if (!output.isEmpty() && !out.startsWith(filePath.path())) { // missing find, unknown option
|
||||||
|
|||||||
Reference in New Issue
Block a user