Utils: Extract a CommandLine structure from a QtcProcess

We regularly pass around strings or filenames or pairs of strings
or filenames and stringlist etc the in the end will be used
as a kind of "command line", with quite a bit of ad-hoc user
code and QtcProcess::addArg etc to set them up and manipulate them.

Let's have a class for that concept.

Change-Id: I288ab939d853b32c717135a65242c584c2beab50
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2019-05-28 18:59:45 +02:00
parent f50859e856
commit 4098be05b2
19 changed files with 56 additions and 25 deletions

View File

@@ -48,6 +48,8 @@
#include <algorithm>
#include <memory>
using namespace Utils;
namespace ProjectExplorer {
/*!
@@ -211,8 +213,8 @@ void AbstractProcessStep::doRun()
}
}
QString effectiveCommand = d->m_param.effectiveCommand().toString();
if (!QFileInfo::exists(effectiveCommand)) {
const CommandLine effectiveCommand{d->m_param.effectiveCommand(), d->m_param.effectiveArguments()};
if (!effectiveCommand.executable().exists()) {
processStartupFailed();
finish(false);
return;
@@ -222,7 +224,7 @@ void AbstractProcessStep::doRun()
d->m_process->setUseCtrlCStub(Utils::HostOsInfo::isWindowsHost());
d->m_process->setWorkingDirectory(wd.absolutePath());
d->m_process->setEnvironment(d->m_param.environment());
d->m_process->setCommand(effectiveCommand, d->m_param.effectiveArguments());
d->m_process->setCommand(effectiveCommand);
connect(d->m_process.get(), &QProcess::readyReadStandardOutput,
this, &AbstractProcessStep::processReadyReadStdOutput);