diff options
-rw-r--r-- | src/plugins/docker/dockerdevice.cpp | 24 | ||||
-rw-r--r-- | src/plugins/docker/dockerdevice.h | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index 48e607b64a..9764f796eb 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -294,6 +294,8 @@ public: QList<ToolChain *> autoDetectToolChains(); void autoDetectCMake(); + void fetchSystemEnviroment(); + DockerDevice *q; DockerDeviceData m_data; @@ -302,6 +304,8 @@ public: QString m_container; QString m_mergedDir; QFileSystemWatcher m_mergedDirWatcher; + + Environment m_cachedEnviroment; }; DockerDevice::DockerDevice(const DockerDeviceData &data) @@ -730,6 +734,26 @@ void DockerDevice::runProcess(QtcProcess &process) const process.start(); } +Environment DockerDevice::systemEnvironment() const +{ + if (d->m_cachedEnviroment.size() == 0) + d->fetchSystemEnviroment(); + + QTC_CHECK(d->m_cachedEnviroment.size() != 0); + return d->m_cachedEnviroment; +} + +void DockerDevicePrivate::fetchSystemEnviroment() +{ + SynchronousProcess proc; + proc.setCommand({"env", {}}); + + proc.runBlocking(); + + const QString remoteOutput = proc.stdOut(); + m_cachedEnviroment = Environment(remoteOutput.split('\n', Qt::SkipEmptyParts), q->osType()); +} + int DockerDevicePrivate::runSynchronously(const CommandLine &cmd) const { CommandLine dcmd{"docker", {"exec", m_container}}; diff --git a/src/plugins/docker/dockerdevice.h b/src/plugins/docker/dockerdevice.h index 5c678ef6e3..ee9b6a90eb 100644 --- a/src/plugins/docker/dockerdevice.h +++ b/src/plugins/docker/dockerdevice.h @@ -84,6 +84,8 @@ public: QByteArray fileContents(const Utils::FilePath &filePath, int limit) const override; void runProcess(Utils::QtcProcess &process) const override; + Utils::Environment systemEnvironment() const override; + const DockerDeviceData &data() const; void tryCreateLocalFileAccess() const; |