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:
@@ -257,11 +257,11 @@ bool AndroidBuildApkStep::init()
|
||||
}
|
||||
|
||||
ProjectExplorer::ProcessParameters *pp = processParameters();
|
||||
setupProcessParameters(pp, this, arguments, command);
|
||||
Android::setupProcessParameters(pp, this, arguments, command);
|
||||
|
||||
// Generate arguments with keystore password concealed
|
||||
ProjectExplorer::ProcessParameters pp2;
|
||||
setupProcessParameters(&pp2, this, argumentsPasswordConcealed, command);
|
||||
Android::setupProcessParameters(&pp2, this, argumentsPasswordConcealed, command);
|
||||
m_command = pp2.effectiveCommand().toString();
|
||||
m_argumentsPasswordConcealed = pp2.prettyArguments();
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -39,10 +39,16 @@ class PROJECTEXPLORER_EXPORT AbstractProcessStep : public BuildStep
|
||||
|
||||
public:
|
||||
ProcessParameters *processParameters();
|
||||
void setupProcessParameters(ProcessParameters *params);
|
||||
|
||||
bool ignoreReturnValue() const;
|
||||
void setIgnoreReturnValue(bool b);
|
||||
|
||||
void setCommandLineProvider(const std::function<Utils::CommandLine()> &provider);
|
||||
void setWorkingDirectoryProvider(const std::function<Utils::FilePath()> &provider);
|
||||
void setEnvironmentModifier(const std::function<void(Utils::Environment &)> &modifier);
|
||||
void setUseEnglishOutput();
|
||||
|
||||
void emitFaultyConfigurationMessage();
|
||||
|
||||
protected:
|
||||
|
@@ -226,9 +226,7 @@ bool MakeStep::init()
|
||||
}
|
||||
|
||||
ProcessParameters *pp = processParameters();
|
||||
pp->setMacroExpander(macroExpander());
|
||||
pp->setWorkingDirectory(buildDirectory());
|
||||
pp->setEnvironment(buildEnvironment());
|
||||
setupProcessParameters(pp);
|
||||
pp->setCommandLine(make);
|
||||
pp->resolveAll();
|
||||
|
||||
|
Reference in New Issue
Block a user