diff options
author | hjk <hjk@qt.io> | 2019-05-28 18:59:45 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-05-29 14:36:46 +0000 |
commit | 4098be05b23dd20aaf752fb9aec79fe8d90a4220 (patch) | |
tree | b593688a2f5808fb42221dcf4127faeba0d8c6c6 /src/libs/utils | |
parent | f50859e856b911ba0667fc9aaa5df4c8882f8679 (diff) | |
download | qt-creator-4098be05b23dd20aaf752fb9aec79fe8d90a4220.tar.gz |
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>
Diffstat (limited to 'src/libs/utils')
-rw-r--r-- | src/libs/utils/qtcprocess.cpp | 7 | ||||
-rw-r--r-- | src/libs/utils/qtcprocess.h | 27 |
2 files changed, 26 insertions, 8 deletions
diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index dd4fe16f49..d05746d5b1 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -694,7 +694,8 @@ void QtcProcess::start() const OsType osType = HostOsInfo::hostOs(); if (m_haveEnv) { if (m_environment.size() == 0) - qWarning("QtcProcess::start: Empty environment set when running '%s'.", qPrintable(m_command)); + qWarning("QtcProcess::start: Empty environment set when running '%s'.", + qPrintable(m_commandLine.executable().toString())); env = m_environment; QProcess::setEnvironment(env.toStringList()); @@ -705,7 +706,9 @@ void QtcProcess::start() const QString &workDir = workingDirectory(); QString command; QtcProcess::Arguments arguments; - bool success = prepareCommand(m_command, m_arguments, &command, &arguments, osType, &env, &workDir); + bool success = prepareCommand(m_commandLine.executable().toString(), + m_commandLine.arguments(), + &command, &arguments, osType, &env, &workDir); if (osType == OsTypeWindows) { QString args; if (m_useCtrlCStub) { diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index 44c5786661..69c79098b4 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -32,16 +32,32 @@ namespace Utils { class AbstractMacroExpander; +class QTCREATOR_UTILS_EXPORT CommandLine +{ +public: + CommandLine() {} + + CommandLine(const FilePath &executable, const QString &arguments) + : m_executable(executable), m_arguments(arguments) + {} + + FilePath executable() const { return m_executable; } + QString arguments() const { return m_arguments; } + +private: + FilePath m_executable; + QString m_arguments; +}; + class QTCREATOR_UTILS_EXPORT QtcProcess : public QProcess { Q_OBJECT public: QtcProcess(QObject *parent = nullptr); - void setEnvironment(const Environment &env) - { m_environment = env; m_haveEnv = true; } - void setCommand(const QString &command, const QString &arguments) - { m_command = command; m_arguments = arguments; } + + void setEnvironment(const Environment &env) { m_environment = env; m_haveEnv = true; } + void setCommand(const CommandLine &cmdLine) { m_commandLine = cmdLine; } void setUseCtrlCStub(bool enabled); void start(); void terminate(); @@ -141,8 +157,7 @@ public: }; private: - QString m_command; - QString m_arguments; + CommandLine m_commandLine; Environment m_environment; bool m_haveEnv = false; bool m_useCtrlCStub = false; |