ProcessParameters: Reuse ProcessRunData

Change-Id: I0fdde4303d23ed1350cc36846319264f952df42b
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2023-08-17 14:08:06 +02:00
parent ec7abcf98c
commit 17d8f61f93
2 changed files with 21 additions and 25 deletions

View File

@@ -35,7 +35,7 @@ ProcessParameters::ProcessParameters() = default;
*/
void ProcessParameters::setCommandLine(const CommandLine &cmdLine)
{
m_command = cmdLine;
m_runData.command = cmdLine;
m_effectiveCommand.clear();
m_effectiveArguments.clear();
@@ -51,7 +51,7 @@ void ProcessParameters::setCommandLine(const CommandLine &cmdLine)
void ProcessParameters::setWorkingDirectory(const FilePath &workingDirectory)
{
m_workingDirectory = workingDirectory;
m_runData.workingDirectory = workingDirectory;
m_effectiveWorkingDirectory.clear();
effectiveWorkingDirectory();
@@ -79,12 +79,12 @@ void ProcessParameters::setWorkingDirectory(const FilePath &workingDirectory)
FilePath ProcessParameters::effectiveWorkingDirectory() const
{
if (m_effectiveWorkingDirectory.isEmpty()) {
m_effectiveWorkingDirectory = m_workingDirectory;
QString path = m_workingDirectory.path();
m_effectiveWorkingDirectory = m_runData.workingDirectory;
QString path = m_runData.workingDirectory.path();
if (m_macroExpander)
path = m_macroExpander->expand(path);
m_effectiveWorkingDirectory =
m_effectiveWorkingDirectory.withNewPath(QDir::cleanPath(m_environment.expandVariables(path)));
m_effectiveWorkingDirectory = m_effectiveWorkingDirectory.withNewPath(
QDir::cleanPath(m_runData.environment.expandVariables(path)));
}
return m_effectiveWorkingDirectory;
}
@@ -96,14 +96,14 @@ FilePath ProcessParameters::effectiveWorkingDirectory() const
FilePath ProcessParameters::effectiveCommand() const
{
if (m_effectiveCommand.isEmpty()) {
FilePath cmd = m_command.executable();
FilePath cmd = m_runData.command.executable();
if (m_macroExpander)
cmd = m_macroExpander->expand(cmd);
if (cmd.needsDevice()) {
// Assume this is already good. FIXME: It is possibly not, so better fix searchInPath.
m_effectiveCommand = cmd;
} else {
m_effectiveCommand = m_environment.searchInPath(cmd.toString(),
m_effectiveCommand = m_runData.environment.searchInPath(cmd.toString(),
{effectiveWorkingDirectory()});
}
m_commandMissing = m_effectiveCommand.isEmpty();
@@ -126,7 +126,7 @@ bool ProcessParameters::commandMissing() const
QString ProcessParameters::effectiveArguments() const
{
if (m_effectiveArguments.isEmpty()) {
m_effectiveArguments = m_command.arguments();
m_effectiveArguments = m_runData.command.arguments();
if (m_macroExpander)
m_effectiveArguments = m_macroExpander->expand(m_effectiveArguments);
}
@@ -135,7 +135,7 @@ QString ProcessParameters::effectiveArguments() const
QString ProcessParameters::prettyCommand() const
{
QString cmd = m_command.executable().toString();
QString cmd = m_runData.command.executable().toString();
if (m_macroExpander)
cmd = m_macroExpander->expand(cmd);
return FilePath::fromString(cmd).fileName();
@@ -143,11 +143,11 @@ QString ProcessParameters::prettyCommand() const
QString ProcessParameters::prettyArguments() const
{
QString margs = effectiveArguments();
FilePath workDir = effectiveWorkingDirectory();
const QString margs = effectiveArguments();
const FilePath workDir = effectiveWorkingDirectory();
ProcessArgs::SplitError err;
ProcessArgs args =
ProcessArgs::prepareArgs(margs, &err, HostOsInfo::hostOs(), &m_environment, &workDir);
const ProcessArgs args = ProcessArgs::prepareArgs(margs, &err, HostOsInfo::hostOs(),
&m_runData.environment, &workDir);
if (err != ProcessArgs::SplitOk)
return margs; // Sorry, too complex - just fall back.
return args.toString();

View File

@@ -5,9 +5,7 @@
#include "projectexplorer_export.h"
#include <utils/commandline.h>
#include <utils/environment.h>
#include <utils/fileutils.h>
#include <utils/processinterface.h>
namespace Utils {
class MacroExpander;
@@ -22,13 +20,13 @@ public:
ProcessParameters();
void setCommandLine(const Utils::CommandLine &cmdLine);
Utils::CommandLine command() const { return m_command; }
Utils::CommandLine command() const { return m_runData.command; }
void setWorkingDirectory(const Utils::FilePath &workingDirectory);
Utils::FilePath workingDirectory() const { return m_workingDirectory; }
Utils::FilePath workingDirectory() const { return m_runData.workingDirectory; }
void setEnvironment(const Utils::Environment &env) { m_environment = env; }
Utils::Environment environment() const { return m_environment; }
void setEnvironment(const Utils::Environment &env) { m_runData.environment = env; }
Utils::Environment environment() const { return m_runData.environment; }
void setMacroExpander(Utils::MacroExpander *mx) { m_macroExpander = mx; }
Utils::MacroExpander *macroExpander() const { return m_macroExpander; }
@@ -49,9 +47,7 @@ public:
QString summaryInWorkdir(const QString &displayName) const;
private:
Utils::FilePath m_workingDirectory;
Utils::CommandLine m_command;
Utils::Environment m_environment;
Utils::ProcessRunData m_runData;
Utils::MacroExpander *m_macroExpander = nullptr;
mutable Utils::FilePath m_effectiveWorkingDirectory;