forked from qt-creator/qt-creator
Docker: Implement fallback for DockerDevice::directoryEntries()
Change-Id: I57430bc4cf79abfc07ccbe06746a0857e10053da Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -969,9 +969,9 @@ bool FilePath::createDir() const
|
||||
return dir.mkpath(dir.absolutePath());
|
||||
}
|
||||
|
||||
QList<FilePath> FilePath::dirEntries(const QStringList &nameFilters,
|
||||
QDir::Filters filters,
|
||||
QDir::SortFlags sort) const
|
||||
FilePaths FilePath::dirEntries(const QStringList &nameFilters,
|
||||
QDir::Filters filters,
|
||||
QDir::SortFlags sort) const
|
||||
{
|
||||
if (needsDevice()) {
|
||||
QTC_ASSERT(s_deviceHooks.dirEntries, return {});
|
||||
@@ -982,6 +982,41 @@ QList<FilePath> FilePath::dirEntries(const QStringList &nameFilters,
|
||||
return Utils::transform(entryInfoList, &FilePath::fromFileInfo);
|
||||
}
|
||||
|
||||
FilePaths FilePath::filterEntriesHelper(const FilePath &base,
|
||||
const QStringList &entries,
|
||||
const QStringList &nameFilters,
|
||||
QDir::Filters filters,
|
||||
QDir::SortFlags sort)
|
||||
{
|
||||
const QList<QRegularExpression> nameRegexps = transform(nameFilters, [](const QString &filter) {
|
||||
QRegularExpression re;
|
||||
re.setPattern(QRegularExpression::wildcardToRegularExpression(filter));
|
||||
QTC_CHECK(re.isValid());
|
||||
return re;
|
||||
});
|
||||
|
||||
const auto nameMatches = [&nameRegexps](const QString &fileName) {
|
||||
for (const QRegularExpression &re : nameRegexps) {
|
||||
const QRegularExpressionMatch match = re.match(fileName);
|
||||
if (match.hasMatch())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
// FIXME: Handle sort and filters. For now bark on unsupported options.
|
||||
QTC_CHECK(filters == QDir::NoFilter);
|
||||
QTC_CHECK(sort == QDir::NoSort);
|
||||
|
||||
FilePaths result;
|
||||
for (const QString &entry : entries) {
|
||||
if (!nameMatches(entry))
|
||||
continue;
|
||||
result.append(base.pathAppended(entry));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QList<FilePath> FilePath::dirEntries(QDir::Filters filters) const
|
||||
{
|
||||
return dirEntries({}, filters);
|
||||
|
||||
Reference in New Issue
Block a user