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);
|
||||
}
|
||||
|
||||
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
|
||||
|
@@ -164,13 +164,16 @@ public:
|
||||
[[nodiscard]] FilePath relativeChildPath(const FilePath &parent) const;
|
||||
[[nodiscard]] FilePath relativePath(const FilePath &anchor) const;
|
||||
[[nodiscard]] FilePath searchInDirectories(const QList<FilePath> &dirs) const;
|
||||
[[nodiscard]] FilePath searchInPath(const QList<FilePath> &additionalDirs = {}) const;
|
||||
[[nodiscard]] Environment deviceEnvironment() const;
|
||||
[[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const;
|
||||
[[nodiscard]] FilePath withNewPath(const QString &newPath) const;
|
||||
void iterateDirectory(const std::function<bool(const FilePath &item)> &callBack,
|
||||
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
|
||||
// on Windows and macOS. This is rarely needed.
|
||||
[[nodiscard]] FilePath normalizedPathName() const;
|
||||
|
@@ -141,11 +141,9 @@ FilePath GitSettings::gitExecutable(bool *ok, QString *errorMessage) const
|
||||
errorMessage->clear();
|
||||
|
||||
FilePath binPath = binaryPath.filePath();
|
||||
if (!binPath.isAbsolutePath()) {
|
||||
Environment env = Environment::systemEnvironment();
|
||||
env.prependOrSetPath(path.filePath());
|
||||
binPath = env.searchInPath(binPath.toString());
|
||||
}
|
||||
if (!binPath.isAbsolutePath())
|
||||
binPath = binPath.searchInPath({path.filePath()}, FilePath::PrependToPath);
|
||||
|
||||
if (binPath.isEmpty()) {
|
||||
if (ok)
|
||||
*ok = false;
|
||||
|
Reference in New Issue
Block a user