Utils: Replace SynchronousCommand::flags by a named bool

The potential extensibility was never used, and a similar use case
in QtcProcess (setLowPriority()) used a named setter.

Change-Id: I77d84ea2206995d5069265f8df78f40cf2ba8a36
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
hjk
2021-05-05 15:23:34 +02:00
parent 40e2bb2551
commit 9a7a0098a3
8 changed files with 21 additions and 37 deletions

View File

@@ -103,6 +103,7 @@ public:
bool m_progressiveOutput = false; bool m_progressiveOutput = false;
bool m_hadOutput = false; bool m_hadOutput = false;
bool m_aborted = false; bool m_aborted = false;
bool m_disableUnixTerminal = false;
}; };
ShellCommandPrivate::Job::Job(const QString &wd, const CommandLine &command, ShellCommandPrivate::Job::Job(const QString &wd, const CommandLine &command,
@@ -224,11 +225,6 @@ void ShellCommand::cancel()
emit terminate(); emit terminate();
} }
unsigned ShellCommand::processFlags() const
{
return 0;
}
void ShellCommand::addTask(QFuture<void> &future) void ShellCommand::addTask(QFuture<void> &future)
{ {
Q_UNUSED(future) Q_UNUSED(future)
@@ -357,7 +353,8 @@ SynchronousProcessResponse ShellCommand::runFullySynchronous(const CommandLine &
{ {
// Set up process // Set up process
SynchronousProcess process; SynchronousProcess process;
process.setFlags(processFlags()); if (d->m_disableUnixTerminal)
process.setDisableUnixTerminal();
const QString dir = workDirectory(workingDirectory); const QString dir = workDirectory(workingDirectory);
if (!dir.isEmpty()) if (!dir.isEmpty())
process.setWorkingDirectory(dir); process.setWorkingDirectory(dir);
@@ -401,7 +398,8 @@ SynchronousProcessResponse ShellCommand::runSynchronous(const CommandLine &cmd,
process.setTimeoutS(timeoutS); process.setTimeoutS(timeoutS);
if (d->m_codec) if (d->m_codec)
process.setCodec(d->m_codec); process.setCodec(d->m_codec);
process.setFlags(processFlags()); if (d->m_disableUnixTerminal)
process.setDisableUnixTerminal();
const QString dir = workDirectory(workingDirectory); const QString dir = workDirectory(workingDirectory);
if (!dir.isEmpty()) if (!dir.isEmpty())
process.setWorkingDirectory(dir); process.setWorkingDirectory(dir);
@@ -489,6 +487,11 @@ void ShellCommand::setOutputProxyFactory(const std::function<OutputProxy *()> &f
d->m_proxyFactory = factory; d->m_proxyFactory = factory;
} }
void ShellCommand::setDisableUnixTerminal()
{
d->m_disableUnixTerminal = true;
}
ProgressParser::ProgressParser() : ProgressParser::ProgressParser() :
m_futureMutex(new QMutex) m_futureMutex(new QMutex)
{ } { }

View File

@@ -141,6 +141,7 @@ public:
void setProgressiveOutput(bool progressive); void setProgressiveOutput(bool progressive);
void setOutputProxyFactory(const std::function<OutputProxy *()> &factory); void setOutputProxyFactory(const std::function<OutputProxy *()> &factory);
void setDisableUnixTerminal();
// This is called once per job in a thread. // This is called once per job in a thread.
// When called from the UI thread it will execute fully synchronously, so no signals will // When called from the UI thread it will execute fully synchronously, so no signals will
@@ -162,7 +163,6 @@ signals:
void terminate(); // Internal void terminate(); // Internal
protected: protected:
virtual unsigned processFlags() const;
virtual void addTask(QFuture<void> &future); virtual void addTask(QFuture<void> &future);
int timeoutS() const; int timeoutS() const;
QString workDirectory(const QString &wd) const; QString workDirectory(const QString &wd) const;

View File

@@ -93,8 +93,7 @@ class TerminalControllingProcess : public QtcProcess
public: public:
TerminalControllingProcess(); TerminalControllingProcess();
unsigned flags() const { return m_flags; } void setDisableUnixTerminal() { m_disableUnixTerminal = true; }
void setFlags(unsigned tc) { m_flags = tc; }
protected: protected:
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
@@ -104,7 +103,7 @@ protected:
private: private:
void setupChildProcess_impl(); void setupChildProcess_impl();
unsigned m_flags = 0; bool m_disableUnixTerminal = false;
}; };
TerminalControllingProcess::TerminalControllingProcess() TerminalControllingProcess::TerminalControllingProcess()
@@ -125,7 +124,7 @@ void TerminalControllingProcess::setupChildProcess_impl()
{ {
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
// Disable terminal by becoming a session leader. // Disable terminal by becoming a session leader.
if (m_flags & SynchronousProcess::UnixTerminalDisabled) if (m_disableUnixTerminal)
setsid(); setsid();
#endif #endif
} }
@@ -410,14 +409,9 @@ void SynchronousProcess::setEnvironment(const Environment &e)
d->m_process.setEnvironment(Environment(e)); d->m_process.setEnvironment(Environment(e));
} }
unsigned SynchronousProcess::flags() const void SynchronousProcess::setDisableUnixTerminal()
{ {
return d->m_process.flags(); d->m_process.setDisableUnixTerminal();
}
void SynchronousProcess::setFlags(unsigned tc)
{
d->m_process.setFlags(tc);
} }
void SynchronousProcess::setExitCodeInterpreter(const ExitCodeInterpreter &interpreter) void SynchronousProcess::setExitCodeInterpreter(const ExitCodeInterpreter &interpreter)

View File

@@ -85,11 +85,6 @@ class QTCREATOR_UTILS_EXPORT SynchronousProcess : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
enum Flags {
// Unix: Do not give the child process a terminal for input prompting.
UnixTerminalDisabled = 0x1
};
SynchronousProcess(); SynchronousProcess();
~SynchronousProcess() override; ~SynchronousProcess() override;
@@ -119,8 +114,8 @@ public:
void setWorkingDirectory(const QString &workingDirectory); void setWorkingDirectory(const QString &workingDirectory);
QString workingDirectory() const; QString workingDirectory() const;
unsigned flags() const; // Unix: Do not give the child process a terminal for input prompting.
void setFlags(unsigned); void setDisableUnixTerminal();
void setExitCodeInterpreter(const ExitCodeInterpreter &interpreter); void setExitCodeInterpreter(const ExitCodeInterpreter &interpreter);
ExitCodeInterpreter exitCodeInterpreter() const; ExitCodeInterpreter exitCodeInterpreter() const;

View File

@@ -200,7 +200,7 @@ static FilePath qmakeFromCMakeCache(const CMakeConfig &config)
SynchronousProcess cmake; SynchronousProcess cmake;
cmake.setTimeoutS(5); cmake.setTimeoutS(5);
cmake.setFlags(SynchronousProcess::UnixTerminalDisabled); cmake.setDisableUnixTerminal();
Environment env = Environment::systemEnvironment(); Environment env = Environment::systemEnvironment();
Environment::setupEnglishOutput(&env); Environment::setupEnglishOutput(&env);
cmake.setEnvironment(env); cmake.setEnvironment(env);

View File

@@ -193,7 +193,7 @@ Utils::SynchronousProcessResponse CMakeTool::run(const QStringList &args, int ti
{ {
Utils::SynchronousProcess cmake; Utils::SynchronousProcess cmake;
cmake.setTimeoutS(timeoutS); cmake.setTimeoutS(timeoutS);
cmake.setFlags(Utils::SynchronousProcess::UnixTerminalDisabled); cmake.setDisableUnixTerminal();
Utils::Environment env = Utils::Environment::systemEnvironment(); Utils::Environment env = Utils::Environment::systemEnvironment();
Utils::Environment::setupEnglishOutput(&env); Utils::Environment::setupEnglishOutput(&env);
cmake.setEnvironment(env); cmake.setEnvironment(env);

View File

@@ -41,6 +41,7 @@ VcsCommand::VcsCommand(const QString &workingDirectory, const Environment &envir
m_preventRepositoryChanged(false) m_preventRepositoryChanged(false)
{ {
VcsOutputWindow::setRepository(workingDirectory); VcsOutputWindow::setRepository(workingDirectory);
setDisableUnixTerminal();
setOutputProxyFactory([this] { setOutputProxyFactory([this] {
auto proxy = new OutputProxy; auto proxy = new OutputProxy;
VcsOutputWindow *outputWindow = VcsOutputWindow::instance(); VcsOutputWindow *outputWindow = VcsOutputWindow::instance();
@@ -94,14 +95,6 @@ void VcsCommand::emitRepositoryChanged(const QString &workingDirectory)
Core::VcsManager::emitRepositoryChanged(workDirectory(workingDirectory)); Core::VcsManager::emitRepositoryChanged(workDirectory(workingDirectory));
} }
unsigned VcsCommand::processFlags() const
{
unsigned processFlags = 0;
if (!VcsBase::sshPrompt().isEmpty() && (flags() & SshPasswordPrompt))
processFlags |= SynchronousProcess::UnixTerminalDisabled;
return processFlags;
}
void VcsCommand::coreAboutToClose() void VcsCommand::coreAboutToClose()
{ {
m_preventRepositoryChanged = true; m_preventRepositoryChanged = true;

View File

@@ -51,7 +51,6 @@ public:
const Utils::ExitCodeInterpreter &interpreter = Utils::defaultExitCodeInterpreter) override; const Utils::ExitCodeInterpreter &interpreter = Utils::defaultExitCodeInterpreter) override;
private: private:
unsigned processFlags() const override;
void emitRepositoryChanged(const QString &workingDirectory); void emitRepositoryChanged(const QString &workingDirectory);
void coreAboutToClose() override; void coreAboutToClose() override;