local Promise = require 'promise' local M = {} function M.dump(o) if type(o) == 'table' then local s = '{' for k, v in pairs(o) do if type(k) ~= 'number' then k = '"' .. k .. '"' end s = s .. ' [' .. k .. '] = ' .. M.dump(v) .. ',' end return s .. '} ' else return tostring(o) end end local function onErrorP(reason) print('Error found: ' .. (reason and M.dump(reason) or 'unknown')) end -- https://github.com/Tnixc/nix-config/blob/main/home/programs/aerospace-sketchybar/sbar-config-libs/items/aerospaces.lua function M.sbarExecP(cmd) return Promise.new(function(resolve, failfunc) sbar.exec(cmd, function(result, exit_code) if exit_code ~= 0 then if failfunc ~= nil then failfunc(string.format('Exit Code: %s Message: %s', tostring(exit_code), M.dump(result))) end else if resolve ~= nil then resolve(result) end end end) end):catch(onErrorP) end return M