From 799dd9d10173f0a852a6caa20c26d512aee700ae Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Wed, 12 Jul 2023 09:23:55 +0200 Subject: [PATCH] AbstractProcessStep: Introduce defaultProcessTask() Task-number: QTCREATORBUG-29168 Change-Id: Ic10a2edefd1a2ce1ffffd0eb051a720d9462e099 Reviewed-by: hjk --- src/plugins/projectexplorer/abstractprocessstep.cpp | 9 +++++++++ src/plugins/projectexplorer/abstractprocessstep.h | 8 ++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index a89a7eb5137..56260a4854e 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -202,6 +202,15 @@ void AbstractProcessStep::setupStreams() d->stderrStream = std::make_unique(QTextCodec::codecForLocale()); } +GroupItem AbstractProcessStep::defaultProcessTask() +{ + const auto onSetup = [this](Process &process) { + return setupProcess(process) ? SetupResult::Continue : SetupResult::StopWithError; + }; + const auto onEnd = [this](const Process &process) { handleProcessDone(process); }; + return ProcessTask(onSetup, onEnd, onEnd); +} + bool AbstractProcessStep::setupProcess(Process &process) { const FilePath workingDir = d->m_param.effectiveWorkingDirectory(); diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index 6c4a9c50715..9c2618819c3 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -9,11 +9,14 @@ namespace Utils { class CommandLine; -enum class ProcessResult; class Process; +enum class ProcessResult; } -namespace Tasking { class Group; } +namespace Tasking { +class Group; +class GroupItem; +} namespace ProjectExplorer { class ProcessParameters; @@ -48,6 +51,7 @@ protected: void setLowPriority(); void setDisplayedParameters(ProcessParameters *params); + Tasking::GroupItem defaultProcessTask(); bool setupProcess(Utils::Process &process); void handleProcessDone(const Utils::Process &process); void runTaskTree(const Tasking::Group &recipe);