#!/usr/bin/lua require("aports") -- subcommands ----------------------- subcmd = {} subcmd.revdep = { desc = "Print reverse dependencies", usage = "PKG...", run = function(opts) local i local apkdb, rev = aports.init_apkdb(repodirs) for i = 2, #opts do local pkg = opts[i] local _,p for _,p in ipairs(rev[pkg] or {}) do print(p.pkgname) end end end } subcmd.list = { desc = "Print all packages built from aports tree", usage = "", run = function() local apkdb = aports.init_apkdb(repodirs) local k,v for k,v in pairs(apkdb) do print(k) end end } subcmd.recursdeps = { desc = "Recursively print all make dependencies for given packages", usage = "PKG...", run = function (opts) local i local visited = {} local apkdb, rev = aports.init_apkdb(repodirs) function recurs(pn) if pn == nil or visited[pn] or apkdb[pn] == nil then return end visited[pn] = true local i,d, p for i,p in ipairs(apkdb[pn]) do local _, d for _, d in ipairs(p.depends) do recurs(d) end for _, d in ipairs(p.makedepends) do recurs(d) end end print(pn) end for i = 2, #opts do recurs(opts[i]) end end } subcmd.builddirs = { desc = "Print the build dirs for given packages in build order", usage = "PKG...", run = function(opts) local i, p, _ local visited = {} local apkdb, rev = aports.init_apkdb(repodirs) local to_print = {} function recursdir(pn) if pn == nil or visited[pn] or apkdb[pn] == nil then return end visited[pn] = true local i, p for i,p in pairs(apkdb[pn]) do local _, d for _, d in pairs(p.depends) do recursdir(d) end for _, d in pairs(p.makedepends) do recursdir(d) end if to_print[p.dir] then print(p.dir) to_print[p.dir] = nil end end end for i = 2, #opts do for _,p in pairs(apkdb[opts[i]]) do to_print[p.dir] = true end end for i = 2, #opts do recursdir(opts[i]) end end } function print_usage() io.write("usage: ap -d