116 lines
3.2 KiB
Lua
116 lines
3.2 KiB
Lua
--#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 <pkg, ...> - Installs packages.")
|
|
print("xpm add-repo <repo, ...> - Adds a package repo. Does not refresh cache.")
|
|
print("xpm remove-repo <repo, ...> - Removes a repo. Does not refresh cache.")
|
|
print("xpm remove <pkg, ...> - Removes a package.")
|
|
print("xpm info <pkg> - Gets package info.")
|
|
print("xpm deptree <pkg> - Gets dependency tree.")
|
|
print("xpm list [filter] - Lists packages.")
|
|
print("xpm list-installed [filter] - Lists installed packages.")
|
|
else
|
|
print("invalid command")
|
|
return false
|
|
end |