aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcus Tillmanns <marcus.tillmanns@qt.io>2024-05-02 14:33:58 +0200
committerMarcus Tillmanns <marcus.tillmanns@qt.io>2024-05-06 05:59:46 +0000
commita8d6dde8e37917bf4e6304b1bcda25fc7bdc2b32 (patch)
treeff8d3c49429c5bf672a9039e58c408a6226d72d5
parentbd99669503c2626954808d8c4689d33b217e24c8 (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.cpp44
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