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,
|
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,
|
FilePath Environment::searchInPath(const QString &executable,
|
||||||
|
@@ -57,10 +57,11 @@ public:
|
|||||||
const FilePaths &additionalDirs = FilePaths(),
|
const FilePaths &additionalDirs = FilePaths(),
|
||||||
const PathFilter &func = PathFilter()) const;
|
const PathFilter &func = PathFilter()) const;
|
||||||
FilePath searchInDirectories(const QString &executable,
|
FilePath searchInDirectories(const QString &executable,
|
||||||
const FilePaths &dirs) const;
|
const FilePaths &dirs,
|
||||||
|
const PathFilter &func = {}) const;
|
||||||
FilePaths findAllInPath(const QString &executable,
|
FilePaths findAllInPath(const QString &executable,
|
||||||
const FilePaths &additionalDirs = FilePaths(),
|
const FilePaths &additionalDirs = {},
|
||||||
const PathFilter &func = PathFilter()) const;
|
const PathFilter &func = {}) const;
|
||||||
|
|
||||||
FilePaths path() const;
|
FilePaths path() const;
|
||||||
FilePaths pathListValue(const QString &varName) 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"))
|
assert(fullPath == FilePath::fromUrl("docker://123/usr/bin/make"))
|
||||||
\endcode
|
\endcode
|
||||||
*/
|
*/
|
||||||
FilePath FilePath::searchInDirectories(const FilePaths &dirs) const
|
FilePath FilePath::searchInDirectories(const FilePaths &dirs, const PathFilter &filter) const
|
||||||
{
|
{
|
||||||
if (isAbsolutePath())
|
if (isAbsolutePath())
|
||||||
return *this;
|
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())
|
if (isAbsolutePath())
|
||||||
return *this;
|
return *this;
|
||||||
@@ -1328,7 +1330,7 @@ FilePath FilePath::searchInPath(const FilePaths &additionalDirs, PathAmending am
|
|||||||
else
|
else
|
||||||
directories = additionalDirs + directories;
|
directories = additionalDirs + directories;
|
||||||
}
|
}
|
||||||
return searchInDirectories(directories);
|
return searchInDirectories(directories, filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
Environment FilePath::deviceEnvironment() const
|
Environment FilePath::deviceEnvironment() const
|
||||||
|
@@ -145,6 +145,8 @@ public:
|
|||||||
void clear();
|
void clear();
|
||||||
bool isEmpty() const;
|
bool isEmpty() const;
|
||||||
|
|
||||||
|
using PathFilter = std::function<bool(const FilePath &)>;
|
||||||
|
|
||||||
[[nodiscard]] FilePath absoluteFilePath() const;
|
[[nodiscard]] FilePath absoluteFilePath() const;
|
||||||
[[nodiscard]] FilePath absolutePath() const;
|
[[nodiscard]] FilePath absolutePath() const;
|
||||||
[[nodiscard]] FilePath resolvePath(const FilePath &tail) const;
|
[[nodiscard]] FilePath resolvePath(const FilePath &tail) const;
|
||||||
@@ -156,7 +158,8 @@ public:
|
|||||||
[[nodiscard]] FilePath withExecutableSuffix() const;
|
[[nodiscard]] FilePath withExecutableSuffix() const;
|
||||||
[[nodiscard]] FilePath relativeChildPath(const FilePath &parent) const;
|
[[nodiscard]] FilePath relativeChildPath(const FilePath &parent) const;
|
||||||
[[nodiscard]] FilePath relativePathFrom(const FilePath &anchor) 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]] Environment deviceEnvironment() const;
|
||||||
[[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const;
|
[[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const;
|
||||||
[[nodiscard]] FilePath withNewPath(const QString &newPath) const;
|
[[nodiscard]] FilePath withNewPath(const QString &newPath) const;
|
||||||
@@ -178,7 +181,8 @@ public:
|
|||||||
|
|
||||||
enum PathAmending { AppendToPath, PrependToPath };
|
enum PathAmending { AppendToPath, PrependToPath };
|
||||||
[[nodiscard]] FilePath searchInPath(const FilePaths &additionalDirs = {},
|
[[nodiscard]] FilePath searchInPath(const FilePaths &additionalDirs = {},
|
||||||
PathAmending = AppendToPath) const;
|
PathAmending = AppendToPath,
|
||||||
|
const PathFilter &filter = {}) const;
|
||||||
|
|
||||||
enum MatchScope { ExactMatchOnly, WithExeSuffix, WithBatSuffix,
|
enum MatchScope { ExactMatchOnly, WithExeSuffix, WithBatSuffix,
|
||||||
WithExeOrBatSuffix, WithAnySuffix };
|
WithExeOrBatSuffix, WithAnySuffix };
|
||||||
|
Reference in New Issue
Block a user