From d8a582d813ac58190a4ed68e67d66309060b9aec Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 27 May 2024 06:27:30 +0200 Subject: [PATCH] Lua: Add function that returns the output of a process Change-Id: I6863926a4da90adc89d96d47da1542c886b44040 Reviewed-by: Marcus Tillmanns --- src/plugins/lua/bindings/qtcprocess.cpp | 11 +++++++++++ src/plugins/lua/meta/process.lua | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/src/plugins/lua/bindings/qtcprocess.cpp b/src/plugins/lua/bindings/qtcprocess.cpp index c1b4a4eccdd..ff2726a96ef 100644 --- a/src/plugins/lua/bindings/qtcprocess.cpp +++ b/src/plugins/lua/bindings/qtcprocess.cpp @@ -29,11 +29,22 @@ void addProcessModule() p->setEnvironment(Environment::systemEnvironment()); QObject::connect(p, &Process::done, guard, [p, cb]() { cb(p->exitCode()); }); + }; + + process["commandOutput_cb"] = + [guard + = pluginSpec->connectionGuard.get()](const QString &cmdline, const sol::function &cb) { + Process *p = new Process; + p->setCommand(CommandLine::fromUserInput((cmdline))); + p->setEnvironment(Environment::systemEnvironment()); + + QObject::connect(p, &Process::done, guard, [p, cb]() { cb(p->allOutput()); }); p->start(); }; process["runInTerminal"] = wrap(process["runInTerminal_cb"]); + process["commandOutput"] = wrap(process["commandOutput_cb"]); return process; }); diff --git a/src/plugins/lua/meta/process.lua b/src/plugins/lua/meta/process.lua index 05199907706..53b4f35b7d0 100644 --- a/src/plugins/lua/meta/process.lua +++ b/src/plugins/lua/meta/process.lua @@ -8,4 +8,10 @@ local process = {} ---@return number The exit code of the command function process.runInTerminal(cmd) end +---@async +---Runs a command and returns the output! +---@param cmd string The command to run +---@return string The output of the command +function process.commandOutput(cmd) end + return process