diff options
author | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2024-05-02 14:33:58 +0200 |
---|---|---|
committer | Marcus Tillmanns <marcus.tillmanns@qt.io> | 2024-05-06 05:59:46 +0000 |
commit | a8d6dde8e37917bf4e6304b1bcda25fc7bdc2b32 (patch) | |
tree | ff8d3c49429c5bf672a9039e58c408a6226d72d5 | |
parent | bd99669503c2626954808d8c4689d33b217e24c8 (diff) |
Lua: Change Process to directly use Async module
Change-Id: Ie91a308d55b06f35b2f2114a46b347d83e779db2
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
-rw-r--r-- | src/plugins/lua/bindings/qtcprocess.cpp | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/src/plugins/lua/bindings/qtcprocess.cpp b/src/plugins/lua/bindings/qtcprocess.cpp index 3c6c7eef7e..93d3af2e0a 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::table>(); + 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<sol::table>(); - }); + return process; + }); } } // namespace Lua::Internal |