summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/docker/dockerdevice.cpp24
-rw-r--r--src/plugins/docker/dockerdevice.h2
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;