docker: Add dockercli setting

Change-Id: I46fada555d697007042d823ef1cad0658be98e22
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2022-07-04 11:09:11 +02:00
parent 95c1f37a31
commit 8a7a4fce6c
9 changed files with 86 additions and 130 deletions

View File

@@ -43,7 +43,8 @@ using namespace Utils;
DockerApi *s_instance{nullptr};
DockerApi::DockerApi()
DockerApi::DockerApi(QSharedPointer<DockerSettings> settings)
: m_settings(settings)
{
s_instance = this;
}
@@ -56,7 +57,7 @@ DockerApi *DockerApi::instance()
bool DockerApi::canConnect()
{
QtcProcess process;
FilePath dockerExe = findDockerClient();
FilePath dockerExe = dockerClient();
if (dockerExe.isEmpty() || !dockerExe.isExecutableFile())
return false;
@@ -83,11 +84,11 @@ void DockerApi::checkCanConnect(bool async)
return;
m_dockerDaemonAvailable = nullopt;
dockerDaemonAvailableChanged();
emit dockerDaemonAvailableChanged();
auto future = Utils::runAsync([lk = std::move(lk), this] {
m_dockerDaemonAvailable = canConnect();
dockerDaemonAvailableChanged();
emit dockerDaemonAvailableChanged();
});
Core::ProgressManager::addTask(future, tr("Checking docker daemon"), "DockerPlugin");
@@ -98,7 +99,7 @@ void DockerApi::checkCanConnect(bool async)
bool isAvailable = canConnect();
if (!m_dockerDaemonAvailable.has_value() || isAvailable != m_dockerDaemonAvailable) {
m_dockerDaemonAvailable = isAvailable;
dockerDaemonAvailableChanged();
emit dockerDaemonAvailableChanged();
}
}
@@ -121,11 +122,9 @@ Utils::optional<bool> DockerApi::isDockerDaemonAvailable(bool async)
return s_instance->dockerDaemonAvailable(async);
}
FilePath DockerApi::findDockerClient()
FilePath DockerApi::dockerClient()
{
if (m_dockerExecutable.isEmpty() || m_dockerExecutable.isExecutableFile())
m_dockerExecutable = FilePath::fromString("docker").searchInPath();
return m_dockerExecutable;
return FilePath::fromString(m_settings->dockerBinaryPath.value());
}
} // namespace Internal