forked from qt-creator/qt-creator
ProjectExplorer: Start to consolidate AbstractProcessStep setup
Add some convenience functions to the base class to avoid repetition in the derived classes. Will be used immediately it in some derived classes. Change-Id: I8fd6aa4f8351720cdc8f63f7fa5f506e32a8143b Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -108,6 +108,9 @@ public:
|
||||
AbstractProcessStep *q;
|
||||
std::unique_ptr<Utils::QtcProcess> m_process;
|
||||
ProcessParameters m_param;
|
||||
std::function<CommandLine()> m_commandLineProvider;
|
||||
std::function<FilePath()> m_workingDirectoryProvider;
|
||||
std::function<void(Environment &)> m_environmentModifier;
|
||||
bool m_ignoreReturnValue = false;
|
||||
bool m_lowPriority = false;
|
||||
std::unique_ptr<QTextDecoder> stdoutStream;
|
||||
@@ -149,6 +152,26 @@ void AbstractProcessStep::setIgnoreReturnValue(bool b)
|
||||
d->m_ignoreReturnValue = b;
|
||||
}
|
||||
|
||||
void AbstractProcessStep::setEnvironmentModifier(const std::function<void (Environment &)> &modifier)
|
||||
{
|
||||
d->m_environmentModifier = modifier;
|
||||
}
|
||||
|
||||
void AbstractProcessStep::setUseEnglishOutput()
|
||||
{
|
||||
d->m_environmentModifier = [](Environment &env) { Environment::setupEnglishOutput(&env); };
|
||||
}
|
||||
|
||||
void AbstractProcessStep::setCommandLineProvider(const std::function<CommandLine()> &provider)
|
||||
{
|
||||
d->m_commandLineProvider = provider;
|
||||
}
|
||||
|
||||
void AbstractProcessStep::setWorkingDirectoryProvider(const std::function<FilePath()> &provider)
|
||||
{
|
||||
d->m_workingDirectoryProvider = provider;
|
||||
}
|
||||
|
||||
/*!
|
||||
Reimplemented from BuildStep::init(). You need to call this from
|
||||
YourBuildStep::init().
|
||||
@@ -242,6 +265,24 @@ ProcessParameters *AbstractProcessStep::processParameters()
|
||||
return &d->m_param;
|
||||
}
|
||||
|
||||
void AbstractProcessStep::setupProcessParameters(ProcessParameters *params)
|
||||
{
|
||||
params->setMacroExpander(macroExpander());
|
||||
|
||||
Utils::Environment env = buildEnvironment();
|
||||
if (d->m_environmentModifier)
|
||||
d->m_environmentModifier(env);
|
||||
params->setEnvironment(env);
|
||||
|
||||
if (d->m_workingDirectoryProvider)
|
||||
params->setWorkingDirectory(d->m_workingDirectoryProvider());
|
||||
else
|
||||
params->setWorkingDirectory(buildDirectory());
|
||||
|
||||
if (d->m_commandLineProvider)
|
||||
params->setCommandLine(d->m_commandLineProvider());
|
||||
}
|
||||
|
||||
void AbstractProcessStep::Private::cleanUp(QProcess *process)
|
||||
{
|
||||
// The process has finished, leftover data is read in processFinished
|
||||
|
||||
Reference in New Issue
Block a user