From a8d6dde8e37917bf4e6304b1bcda25fc7bdc2b32 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 2 May 2024 14:33:58 +0200 Subject: [PATCH] Lua: Change Process to directly use Async module Change-Id: Ie91a308d55b06f35b2f2114a46b347d83e779db2 Reviewed-by: Reviewed-by: David Schulz --- src/plugins/lua/bindings/qtcprocess.cpp | 44 ++++++++++--------------- 1 file changed, 18 insertions(+), 26 deletions(-) diff --git a/src/plugins/lua/bindings/qtcprocess.cpp b/src/plugins/lua/bindings/qtcprocess.cpp index 3c6c7eef7ec..93d3af2e0ac 100644 --- a/src/plugins/lua/bindings/qtcprocess.cpp +++ b/src/plugins/lua/bindings/qtcprocess.cpp @@ -12,38 +12,30 @@ namespace Lua::Internal { void addProcessModule() { - LuaEngine::registerProvider("__process", [](sol::state_view lua) -> sol::object { - sol::table process = lua.create_table(); + LuaEngine::registerProvider( + "Process", [](sol::state_view lua) -> sol::object { + sol::table async = lua.script("return require('async')", "_process_").get(); + sol::function wrap = async["wrap"]; - process["runInTerminal_cb"] = [](const QString &cmdline, const sol::function &cb) { - Process *p = new Process; - p->setTerminalMode(TerminalMode::Run); - p->setCommand(CommandLine::fromUserInput((cmdline))); - p->setEnvironment(Environment::systemEnvironment()); + sol::table process = lua.create_table(); - QObject::connect(p, &Process::done, [p, cb]() { cb(p->exitCode()); }); + process["runInTerminal_cb"] = [](const QString &cmdline, const sol::function &cb) { + Process *p = new Process; + p->setTerminalMode(TerminalMode::Run); + p->setCommand(CommandLine::fromUserInput((cmdline))); + p->setEnvironment(Environment::systemEnvironment()); - p->start(); - }; + QObject::connect(p, &Process::done, &LuaEngine::instance(), [p, cb]() { + cb(p->exitCode()); + }); - return process; - }); + p->start(); + }; - LuaEngine::registerProvider("Process", [](sol::state_view lua) -> sol::object { - return lua - .script( - R"( -local p = require("__process") -local a = require("async") + process["runInTerminal"] = wrap(process["runInTerminal_cb"]); -return { - runInTerminal_cb = p.runInTerminal_cb, - runInTerminal = a.wrap(p.runInTerminal_cb) -} -)", - "_process_") - .get(); - }); + return process; + }); } } // namespace Lua::Internal