forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -12,38 +12,30 @@ namespace Lua::Internal {
|
|||||||
|
|
||||||
void addProcessModule()
|
void addProcessModule()
|
||||||
{
|
{
|
||||||
LuaEngine::registerProvider("__process", [](sol::state_view lua) -> sol::object {
|
LuaEngine::registerProvider(
|
||||||
sol::table process = lua.create_table();
|
"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) {
|
sol::table process = lua.create_table();
|
||||||
Process *p = new Process;
|
|
||||||
p->setTerminalMode(TerminalMode::Run);
|
|
||||||
p->setCommand(CommandLine::fromUserInput((cmdline)));
|
|
||||||
p->setEnvironment(Environment::systemEnvironment());
|
|
||||||
|
|
||||||
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 {
|
process["runInTerminal"] = wrap(process["runInTerminal_cb"]);
|
||||||
return lua
|
|
||||||
.script(
|
|
||||||
R"(
|
|
||||||
local p = require("__process")
|
|
||||||
local a = require("async")
|
|
||||||
|
|
||||||
return {
|
return process;
|
||||||
runInTerminal_cb = p.runInTerminal_cb,
|
});
|
||||||
runInTerminal = a.wrap(p.runInTerminal_cb)
|
|
||||||
}
|
|
||||||
)",
|
|
||||||
"_process_")
|
|
||||||
.get<sol::table>();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Lua::Internal
|
} // namespace Lua::Internal
|
||||||
|
Reference in New Issue
Block a user