OC-XPM/src/init.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