From 5d14d127d7cda9c5046e40e8a658ff2b24699656 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 9 May 2022 23:12:01 +0300 Subject: [PATCH] VcsBase: Add a convenience function execBgCommand MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creates and executes a command asynchronously, passing its stdout to a callback function. Change-Id: I6be7e803fadf708ca7dc587b612a5a63e9bf09c3 Reviewed-by: Eike Ziller Reviewed-by: André Hartmann --- src/plugins/vcsbase/vcsbaseclient.cpp | 16 ++++++++++++++++ src/plugins/vcsbase/vcsbaseclient.h | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/src/plugins/vcsbase/vcsbaseclient.cpp b/src/plugins/vcsbase/vcsbaseclient.cpp index f7e9cc1aa64..d2d53c487da 100644 --- a/src/plugins/vcsbase/vcsbaseclient.cpp +++ b/src/plugins/vcsbase/vcsbaseclient.cpp @@ -108,6 +108,22 @@ VcsCommand *VcsBaseClientImpl::createCommand(const FilePath &workingDirectory, return cmd; } +VcsCommand *VcsBaseClientImpl::execBgCommand(const FilePath &workingDirectory, + const QStringList &args, + const std::function &outputCallback, + unsigned flags) const +{ + VcsCommand *cmd = createCommand(workingDirectory); + cmd->addFlags(flags + | VcsCommand::SuppressCommandLogging + | VcsCommand::SuppressStdErr + | VcsCommand::SuppressFailMessage); + cmd->addJob({vcsBinary(), args}); + connect(cmd, &VcsCommand::stdOutText, this, outputCallback); + cmd->execute(); + return cmd; +} + void VcsBaseClientImpl::enqueueJob(VcsCommand *cmd, const QStringList &args, const ExitCodeInterpreter &interpreter) const { diff --git a/src/plugins/vcsbase/vcsbaseclient.h b/src/plugins/vcsbase/vcsbaseclient.h index 36141b3ef46..57bff0cb87e 100644 --- a/src/plugins/vcsbase/vcsbaseclient.h +++ b/src/plugins/vcsbase/vcsbaseclient.h @@ -82,6 +82,11 @@ public: VcsBaseEditorWidget *editor = nullptr, JobOutputBindMode mode = NoOutputBind) const; + VcsCommand *execBgCommand(const Utils::FilePath &workingDirectory, + const QStringList &args, + const std::function &outputCallback, + unsigned flags = 0) const; + void enqueueJob(VcsCommand *cmd, const QStringList &args, const Utils::ExitCodeInterpreter &interpreter = {}) const;