diff --git a/src/libs/utils/process.cpp b/src/libs/utils/process.cpp index 8721d6c4214..01e3b7747af 100644 --- a/src/libs/utils/process.cpp +++ b/src/libs/utils/process.cpp @@ -1183,10 +1183,25 @@ const Environment &Process::controlEnvironment() const return d->m_setup.m_controlEnvironment; } +void Process::setRunData(const ProcessRunData &data) +{ + if (data.workingDirectory.needsDevice() && data.command.executable().needsDevice()) { + QTC_CHECK(data.workingDirectory.isSameDevice(data.command.executable())); + } + d->m_setup.m_commandLine = data.command; + d->m_setup.m_workingDirectory = data.workingDirectory; + d->m_setup.m_environment = data.environment; +} + +ProcessRunData Process::runData() const +{ + return {d->m_setup.m_commandLine, d->m_setup.m_workingDirectory, d->m_setup.m_environment}; +} + void Process::setCommand(const CommandLine &cmdLine) { if (d->m_setup.m_workingDirectory.needsDevice() && cmdLine.executable().needsDevice()) { - QTC_CHECK(d->m_setup.m_workingDirectory.host() == cmdLine.executable().host()); + QTC_CHECK(d->m_setup.m_workingDirectory.isSameDevice(cmdLine.executable())); } d->m_setup.m_commandLine = cmdLine; } diff --git a/src/libs/utils/process.h b/src/libs/utils/process.h index 83f1bb990b4..016d80e3279 100644 --- a/src/libs/utils/process.h +++ b/src/libs/utils/process.h @@ -30,6 +30,7 @@ class Environment; class DeviceProcessHooks; class ProcessInterface; class ProcessResultData; +class ProcessRunData; class QTCREATOR_UTILS_EXPORT Process final : public QObject { @@ -78,6 +79,21 @@ public: // ProcessSetupData related + void setRunData(const ProcessRunData &data); + ProcessRunData runData() const; + + void setCommand(const CommandLine &cmdLine); + const CommandLine &commandLine() const; + + void setWorkingDirectory(const FilePath &dir); + FilePath workingDirectory() const; + + void setEnvironment(const Environment &env); // Main process + const Environment &environment() const; + + void setControlEnvironment(const Environment &env); // Possible helper process (ssh on host etc) + const Environment &controlEnvironment() const; + void setProcessImpl(ProcessImpl processImpl); void setPtyData(const std::optional &data); @@ -90,18 +106,6 @@ public: void setProcessMode(ProcessMode processMode); ProcessMode processMode() const; - void setEnvironment(const Environment &env); // Main process - const Environment &environment() const; - - void setControlEnvironment(const Environment &env); // Possible helper process (ssh on host etc) - const Environment &controlEnvironment() const; - - void setCommand(const CommandLine &cmdLine); - const CommandLine &commandLine() const; - - void setWorkingDirectory(const FilePath &dir); - FilePath workingDirectory() const; - void setWriteData(const QByteArray &writeData); void setUseCtrlCStub(bool enabled); // release only @@ -111,8 +115,9 @@ public: bool isRunAsRoot() const; void setAbortOnMetaChars(bool abort); - QProcess::ProcessChannelMode processChannelMode() const; void setProcessChannelMode(QProcess::ProcessChannelMode mode); + QProcess::ProcessChannelMode processChannelMode() const; + void setStandardInputFile(const QString &inputFile); void setExtraData(const QString &key, const QVariant &value);