forked from qt-creator/qt-creator
Utils: Add PathFilter to FilePath::searchInPath
Change-Id: Iccbecc7401f17208487113f89e49ed7103acf9d6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -214,9 +214,10 @@ static FilePath searchInDirectoriesHelper(const Environment &env,
|
||||
}
|
||||
|
||||
FilePath Environment::searchInDirectories(const QString &executable,
|
||||
const FilePaths &dirs) const
|
||||
const FilePaths &dirs,
|
||||
const PathFilter &func) const
|
||||
{
|
||||
return searchInDirectoriesHelper(*this, executable, dirs, {}, false);
|
||||
return searchInDirectoriesHelper(*this, executable, dirs, func, false);
|
||||
}
|
||||
|
||||
FilePath Environment::searchInPath(const QString &executable,
|
||||
|
@@ -57,10 +57,11 @@ public:
|
||||
const FilePaths &additionalDirs = FilePaths(),
|
||||
const PathFilter &func = PathFilter()) const;
|
||||
FilePath searchInDirectories(const QString &executable,
|
||||
const FilePaths &dirs) const;
|
||||
const FilePaths &dirs,
|
||||
const PathFilter &func = {}) const;
|
||||
FilePaths findAllInPath(const QString &executable,
|
||||
const FilePaths &additionalDirs = FilePaths(),
|
||||
const PathFilter &func = PathFilter()) const;
|
||||
const FilePaths &additionalDirs = {},
|
||||
const PathFilter &func = {}) const;
|
||||
|
||||
FilePaths path() const;
|
||||
FilePaths pathListValue(const QString &varName) const;
|
||||
|
@@ -1305,14 +1305,16 @@ FilePath FilePath::withNewPath(const QString &newPath) const
|
||||
assert(fullPath == FilePath::fromUrl("docker://123/usr/bin/make"))
|
||||
\endcode
|
||||
*/
|
||||
FilePath FilePath::searchInDirectories(const FilePaths &dirs) const
|
||||
FilePath FilePath::searchInDirectories(const FilePaths &dirs, const PathFilter &filter) const
|
||||
{
|
||||
if (isAbsolutePath())
|
||||
return *this;
|
||||
return deviceEnvironment().searchInDirectories(path(), dirs);
|
||||
return deviceEnvironment().searchInDirectories(path(), dirs, filter);
|
||||
}
|
||||
|
||||
FilePath FilePath::searchInPath(const FilePaths &additionalDirs, PathAmending amending) const
|
||||
FilePath FilePath::searchInPath(const FilePaths &additionalDirs,
|
||||
PathAmending amending,
|
||||
const PathFilter &filter) const
|
||||
{
|
||||
if (isAbsolutePath())
|
||||
return *this;
|
||||
@@ -1328,7 +1330,7 @@ FilePath FilePath::searchInPath(const FilePaths &additionalDirs, PathAmending am
|
||||
else
|
||||
directories = additionalDirs + directories;
|
||||
}
|
||||
return searchInDirectories(directories);
|
||||
return searchInDirectories(directories, filter);
|
||||
}
|
||||
|
||||
Environment FilePath::deviceEnvironment() const
|
||||
|
@@ -145,6 +145,8 @@ public:
|
||||
void clear();
|
||||
bool isEmpty() const;
|
||||
|
||||
using PathFilter = std::function<bool(const FilePath &)>;
|
||||
|
||||
[[nodiscard]] FilePath absoluteFilePath() const;
|
||||
[[nodiscard]] FilePath absolutePath() const;
|
||||
[[nodiscard]] FilePath resolvePath(const FilePath &tail) const;
|
||||
@@ -156,7 +158,8 @@ public:
|
||||
[[nodiscard]] FilePath withExecutableSuffix() const;
|
||||
[[nodiscard]] FilePath relativeChildPath(const FilePath &parent) const;
|
||||
[[nodiscard]] FilePath relativePathFrom(const FilePath &anchor) const;
|
||||
[[nodiscard]] FilePath searchInDirectories(const FilePaths &dirs) const;
|
||||
[[nodiscard]] FilePath searchInDirectories(const FilePaths &dirs,
|
||||
const PathFilter &filter = {}) const;
|
||||
[[nodiscard]] Environment deviceEnvironment() const;
|
||||
[[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const;
|
||||
[[nodiscard]] FilePath withNewPath(const QString &newPath) const;
|
||||
@@ -178,7 +181,8 @@ public:
|
||||
|
||||
enum PathAmending { AppendToPath, PrependToPath };
|
||||
[[nodiscard]] FilePath searchInPath(const FilePaths &additionalDirs = {},
|
||||
PathAmending = AppendToPath) const;
|
||||
PathAmending = AppendToPath,
|
||||
const PathFilter &filter = {}) const;
|
||||
|
||||
enum MatchScope { ExactMatchOnly, WithExeSuffix, WithBatSuffix,
|
||||
WithExeOrBatSuffix, WithAnySuffix };
|
||||
|
Reference in New Issue
Block a user