forked from qt-creator/qt-creator
Git: Modernize executable search
Change-Id: I3bc1293aab74fcff5574d9a339a52776c891b6cf Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
@@ -1307,9 +1307,16 @@ FilePath FilePath::searchInDirectories(const FilePaths &dirs) const
|
|||||||
return Environment::systemEnvironment().searchInDirectories(path(), dirs);
|
return Environment::systemEnvironment().searchInDirectories(path(), dirs);
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath FilePath::searchInPath(const QList<FilePath> &additionalDirs) const
|
FilePath FilePath::searchInPath(const FilePaths &additionalDirs, PathAmending amending) const
|
||||||
{
|
{
|
||||||
return searchInDirectories(deviceEnvironment().path() + additionalDirs);
|
FilePaths directories = deviceEnvironment().path();
|
||||||
|
if (!additionalDirs.isEmpty()) {
|
||||||
|
if (amending == AppendToPath)
|
||||||
|
directories.append(additionalDirs);
|
||||||
|
else
|
||||||
|
directories = additionalDirs + directories;
|
||||||
|
}
|
||||||
|
return searchInDirectories(directories);
|
||||||
}
|
}
|
||||||
|
|
||||||
Environment FilePath::deviceEnvironment() const
|
Environment FilePath::deviceEnvironment() const
|
||||||
|
@@ -164,13 +164,16 @@ public:
|
|||||||
[[nodiscard]] FilePath relativeChildPath(const FilePath &parent) const;
|
[[nodiscard]] FilePath relativeChildPath(const FilePath &parent) const;
|
||||||
[[nodiscard]] FilePath relativePath(const FilePath &anchor) const;
|
[[nodiscard]] FilePath relativePath(const FilePath &anchor) const;
|
||||||
[[nodiscard]] FilePath searchInDirectories(const QList<FilePath> &dirs) const;
|
[[nodiscard]] FilePath searchInDirectories(const QList<FilePath> &dirs) const;
|
||||||
[[nodiscard]] FilePath searchInPath(const QList<FilePath> &additionalDirs = {}) 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;
|
||||||
void iterateDirectory(const std::function<bool(const FilePath &item)> &callBack,
|
void iterateDirectory(const std::function<bool(const FilePath &item)> &callBack,
|
||||||
const FileFilter &filter) const;
|
const FileFilter &filter) const;
|
||||||
|
|
||||||
|
enum PathAmending { AppendToPath, PrependToPath };
|
||||||
|
[[nodiscard]] FilePath searchInPath(const QList<FilePath> &additionalDirs = {},
|
||||||
|
PathAmending = AppendToPath) const;
|
||||||
|
|
||||||
// makes sure that capitalization of directories is canonical
|
// makes sure that capitalization of directories is canonical
|
||||||
// on Windows and macOS. This is rarely needed.
|
// on Windows and macOS. This is rarely needed.
|
||||||
[[nodiscard]] FilePath normalizedPathName() const;
|
[[nodiscard]] FilePath normalizedPathName() const;
|
||||||
|
@@ -141,11 +141,9 @@ FilePath GitSettings::gitExecutable(bool *ok, QString *errorMessage) const
|
|||||||
errorMessage->clear();
|
errorMessage->clear();
|
||||||
|
|
||||||
FilePath binPath = binaryPath.filePath();
|
FilePath binPath = binaryPath.filePath();
|
||||||
if (!binPath.isAbsolutePath()) {
|
if (!binPath.isAbsolutePath())
|
||||||
Environment env = Environment::systemEnvironment();
|
binPath = binPath.searchInPath({path.filePath()}, FilePath::PrependToPath);
|
||||||
env.prependOrSetPath(path.filePath());
|
|
||||||
binPath = env.searchInPath(binPath.toString());
|
|
||||||
}
|
|
||||||
if (binPath.isEmpty()) {
|
if (binPath.isEmpty()) {
|
||||||
if (ok)
|
if (ok)
|
||||||
*ok = false;
|
*ok = false;
|
||||||
|
Reference in New Issue
Block a user