--#include "src/includes.lua" --#include "src/config.lua" --#include "src/blt.lua" --#include "src/lzss.lua" --#include "src/github.lua" --#include "src/zcache.lua" --#include "src/install.lua" --#include "src/info.lua" --#include "src/remove.lua" local args = table.pack(...) if args[1] == "update" then cache.update_cache() local ug = cache.get_upgradable() if (#ug > 0) then print(#ug .. " packages can be upgraded.") end return true elseif args[1] == "install" then local deps = {} print("Resolving dependencies...") for i=2, #args do resolve_deps(args[i], deps) deps[#deps+1] = args[i] deps[args[i]] = true end print("Packages to be installed:") print(table.concat(deps, " ")) while event.pull(0) do end print("\nContinue with installation? [y/n]") local sig = {event.pull("key_down")} if (sig[3] ~= string.byte("y")) then print("Canceling.") os.exit(0) end for i=1, #deps do print("Installing "..deps[i]) deps[deps[i]] = install_pkg(deps[i]) end for i=1, #deps do print("Running postinstall for "..deps[i]) pkg_postinstall(deps[i], deps[deps[i]]) end return true elseif args[1] == "info" then local pi = get_pkginfo(args[2]) if not pi then io.stderr:write("package not found\n") os.exit(1) end local installed = pkg_installed(args[2]) io.stdout:write(args[2] .. " ") local remver, locver = get_version(args[2]) if (type(remver) ~= "boolean" or type(locver) ~= "boolean") then io.stdout:write("- "..remver) if locver then io.stdout:write(" (installed: "..locver..")") end end print("") print("Name: "..pi.name) print("Authors: "..pi.authors) print(pi.description) if pi.note then print("NOTE: "..pi.note) end elseif args[1] == "list" then local lc = cache.getremote() local mf = lc[-1] local filter = args[2] or "." for k, v in pairs(mf) do if (k:match(filter) and not lc[k].pkginfo.hidden) then print(k) end end elseif args[1] == "list-installed" then local mf = cache.getlocal()[-1] local filter = args[2] or "." for k, v in pairs(mf) do if (k:match(filter)) then print(k) end end elseif args[1] == "remove" then local deps = {} cache.fullload(cache.getlocal(), "local") print("Resolving dependencies...") for i=2, #args do deps[#deps+1] = args[i] deps[args[i]] = true get_removal_deps(args[i], deps) end print("Packages to be removed:") print(table.concat(deps, " ")) print("\nContinue with removal? [y/n]") local sig = {event.pull("key_down")} if (sig[3] ~= string.byte("y")) then print("Canceling.") os.exit(0) end for i=1, #deps do print("Removing "..deps[i]) remove_pkg(deps[i]) end elseif args[1] == "help" then print("xpm update - Updates the cache") print("xpm upgrade - Updates all packages that need to be updated.") print("xpm install - Installs packages.") print("xpm add-repo - Adds a package repo. Does not refresh cache.") print("xpm remove-repo - Removes a repo. Does not refresh cache.") print("xpm remove - Removes a package.") print("xpm info - Gets package info.") print("xpm deptree - Gets dependency tree.") print("xpm list [filter] - Lists packages.") print("xpm list-installed [filter] - Lists installed packages.") else print("invalid command") return false end