diff options
author | Adam Harrison <adamdharrison@gmail.com> | 2024-03-31 18:24:45 -0400 |
---|---|---|
committer | Adam Harrison <adamdharrison@gmail.com> | 2024-03-31 18:24:45 -0400 |
commit | be66aaf58f0b3987bf32aef5524ee00a84f8b8ba (patch) | |
tree | 38bcf8d83e125ac7b8face5b5bc87993e577c403 /src/lpm.lua | |
parent | d7b053a5999fc274b6569b4b01e69ac13e36a33a (diff) | |
parent | 4705785a0b95542299dd6cfc3132011ba81c24f2 (diff) | |
download | lite-xl-plugin-manager-be66aaf58f0b3987bf32aef5524ee00a84f8b8ba.tar.gz lite-xl-plugin-manager-be66aaf58f0b3987bf32aef5524ee00a84f8b8ba.zip |
Merge branch 'PR/restructuring'
Diffstat (limited to 'src/lpm.lua')
-rw-r--r-- | src/lpm.lua | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/src/lpm.lua b/src/lpm.lua index 14ce0fc..cb08fef 100644 --- a/src/lpm.lua +++ b/src/lpm.lua @@ -3,7 +3,7 @@ function global(g) if #g > 0 then for i,v in ipairs(g) do rawset(_S, g[i], true) setmetatable(_G, { __index = function(t, k) if not rawget(_S, k) then error("cannot get undefined global variable: " .. k, 2) end end, __newindex = function(t, k, v) if rawget(_S, k) then rawset(t, k, v) else error("cannot set global variable: " .. k, 2) end end }) -- Begin rxi JSON library. -local json = { _version = "0.1.2" } +global({ json = { _version = "0.1.2" } }) local encode local escape_char_map = { [ "\\" ] = "\\", @@ -2135,7 +2135,7 @@ function lpm.setup() if REPOSITORY then repositories = common.map(type(REPOSITORY) == "table" and REPOSITORY or { REPOSITORY }, function(url) local repo = Repository.url(url) repo:parse_manifest() return repo end) end end -function lpm.run_command(ARGS) +function lpm.command(ARGS) if not ARGS[2]:find("%S") then return elseif ARGS[2] == "init" then return elseif ARGS[2] == "repo" and ARGS[3] == "add" then lpm.repo_add(table.unpack(common.slice(ARGS, 4))) @@ -2168,8 +2168,15 @@ function lpm.run_command(ARGS) elseif ARGS[2] == "run" then return lpm.lite_xl_run(table.unpack(common.slice(ARGS, 3))) elseif ARGS[2] == "switch" then return lpm.lite_xl_switch(table.unpack(common.slice(ARGS, 3))) elseif ARGS[2] == "purge" then lpm.purge() - else error("unknown command: " .. ARGS[2]) end - if JSON then + else return false end + return true +end + +function lpm.run(ARGS) + local result = lpm.command(ARGS) + if result == false then + error("unknown command: " .. ARGS[2]) + elseif result == true and JSON then io.stdout:write(json.encode({ actions = actions, warnings = warnings })) end end @@ -2566,7 +2573,14 @@ not commonly used publically. end local lpm_plugins_path = HOME .. PATHSEP .. ".config" .. PATHSEP .. "lpm" .. PATHSEP .. "plugins" - local lpm_plugins = system.stat(lpm_plugins_path) and common.map(common.grep(system.ls(lpm_plugins_path), function(path) return path:find("%.lua$") end), function(path) return lpm_plugins_path .. PATHSEP .. path end) or {} + local lpm_plugins = {} + if system.stat(lpm_plugins_path) then + local files = system.ls(lpm_plugins_path) + lpm_plugins = common.concat( + common.map(common.grep(files, function(path) return path:find("%.lua$") end), function(path) return lpm_plugins_path .. PATHSEP .. path end), + common.grep(common.map(common.grep(files, function(path) return not path:find("%.lua$") end), function(path) return lpm_plugins_path .. PATHSEP .. path .. PATHSEP .. "init.lua" end), function(path) return system.stat(path) end) + ) + end local env = setmetatable({}, { __index = _G, __newindex = function(t, k, v) _G[k] = v end }) for i,v in ipairs(common.concat(ARGS["plugin"] or {}, { common.split(",", os.getenv("LPM_PLUGINS") or "") }, lpm_plugins)) do @@ -2578,6 +2592,7 @@ not commonly used publically. else log.warning("unable to load lpm plugin " .. v .. ": " .. err) end + if VERBOSE then log.action("Loaded plugin " .. v) end end end @@ -2668,7 +2683,7 @@ not commonly used publically. if ARGS[2] ~= '-' then local res engage_locks(function() - res = lpm.run_command(ARGS) + res = lpm.run(ARGS) end, error_handler, lock_warning) if res then res() @@ -2688,7 +2703,7 @@ not commonly used publically. xpcall(function() local res engage_locks(function() - res = lpm.run_command(args) + res = lpm.run(args) end, error_handler, lock_warning) if res then res() |