yazi/yazi-plugin/preset/plugins/dds.lua

36 lines
729 B
Lua

local M = {}
function M.parse_args(t, i)
local j, args = 1, {}
for i = i, #t do
local word = string.char(table.unpack(t[i]))
local key = word:match("^%-%-([^=]+)")
if not key then
j, args[j] = j + 1, word
elseif #key + 2 == #word then
args[key] = true
else
args[key] = word:sub(#key + 4)
end
end
return args
end
function M:setup()
ps.sub_remote("dds-emit", function(t) ya.emit(t[1], M.parse_args(t, 2)) end)
ps.sub_remote("dds-exec", function(t)
ya.async(function()
local ok, value = pcall(ya.exec, t[2], M.parse_args(t, 3))
ps.pub_to(t[1], "dds-exec-result", ok and {
ok = true,
value = value,
} or {
ok = false,
error = tostring(value),
})
end)
end)
end
return M