summaryrefslogtreecommitdiffstats
path: root/bin/ap.lua
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2017-07-25 21:44:50 +0200
committerJakub Jirutka <jakub@jirutka.cz>2017-07-25 21:44:50 +0200
commita66abec72346d0bd50d0dad6c02c2fc8023e277a (patch)
treeda36dddf35be68bbac04ce9a3b161a59e96b4aa4 /bin/ap.lua
parentb8151f36204607d1697701ad6174af2073ffa77c (diff)
downloadlua-aports-a66abec72346d0bd50d0dad6c02c2fc8023e277a.tar.bz2
lua-aports-a66abec72346d0bd50d0dad6c02c2fc8023e277a.tar.xz
move binfiles to bin/ directory
Diffstat (limited to 'bin/ap.lua')
-rwxr-xr-xbin/ap.lua153
1 files changed, 153 insertions, 0 deletions
diff --git a/bin/ap.lua b/bin/ap.lua
new file mode 100755
index 0000000..1251064
--- /dev/null
+++ b/bin/ap.lua
@@ -0,0 +1,153 @@
+#!/usr/bin/lua5.2
+
+local lfs = require('lfs')
+
+
+-- subcommands -----------------------
+local subcmd = {}
+
+subcmd.revdep = {
+ desc = "Print reverse dependencies",
+ usage = "PKG...",
+ run = function(db, opts)
+ for i = 1, #opts do
+ for _, pkg in db:each_reverse_dependency(opts[i]) do
+ print(pkg.pkgname)
+ end
+ end
+ end
+}
+
+subcmd.list = {
+ desc = "Print all packages built from aports tree",
+ usage = "",
+ run = function(db)
+ for _,pn in db:each() do
+ print(pn)
+ end
+ end
+}
+
+subcmd.recursdeps = {
+ desc = "Recursively print all make dependencies for given packages",
+ usage = "PKG...",
+ run = function (db, opts)
+ for i = 1, #opts do
+ for dep in db:recursive_dependencies(opts[i]) do
+ print(dep)
+ end
+ end
+ end
+}
+
+subcmd.builddirs = {
+ desc = "Print the build dirs for given packages in build order",
+ usage = "PKG...",
+ run = function(db, opts)
+ for pkg in db:each_in_build_order(opts) do
+ print(pkg.dir)
+ end
+ end
+}
+
+subcmd.sources = {
+ desc = "List sources",
+ usage = "PKG...",
+ run = function(db, opts)
+ for i = 1, #opts do
+ for pkg in db:each_pkg_with_name(opts[i]) do
+ for url in pkg:remote_sources() do
+ print(pkg.pkgname, pkg.pkgver, string.gsub(url, pkg.pkgver, "$VERSION"))
+ end
+ end
+ end
+ end
+}
+
+subcmd["build-list"] = {
+ desc = "List packages that can/should be rebuilt",
+ usage = "",
+ run = function(db)
+ local nlist = {}
+ for pkg in db:each_need_build() do
+ table.insert(nlist, pkg.pkgname)
+ end
+ for pkg in db:each_in_build_order(nlist) do
+ print(pkg.dir)
+ end
+ end
+}
+
+subcmd["apk-list"] = {
+ desc = "List all apk files",
+ usage = "",
+ run = function(db)
+ for pkg in db:each() do
+ if pkg:relevant() then
+ print(pkg:get_apk_file_name())
+ end
+ end
+ end
+}
+
+subcmd["dump-json"] = {
+ desc = "Dump all abuilds from aports tree to JSON",
+ run = function(db)
+ local dump = require "aports.dump"
+ print(dump.pkgs_to_json(db:each_aport()))
+ end
+}
+
+local function print_usage()
+ io.write("usage: ap -d <DIR> SUBCOMMAND [options]\n\nSubcommands are:\n")
+ for k in pairs(subcmd) do
+ print(" "..k)
+ end
+end
+
+-- those should be read from some config file
+local repodirs = {}
+
+
+-- parse args
+local opts = {}
+local help = false
+do
+ local i = 1
+ while i <= #arg do
+ if arg[i] == "-d" then
+ i = i + 1
+ repodirs[#repodirs + 1] = arg[i]
+ elseif arg[i] == "-h" then
+ help = true
+ else
+ opts[#opts + 1] = arg[i]
+ end
+ i = i + 1
+ end
+end
+
+local cmd = table.remove(opts, 1)
+
+if help or not cmd then
+ print_usage()
+ -- usage
+ return
+end
+
+if #repodirs == 0 then
+ if lfs.attributes("APKBUILD") then
+ repodirs[1] = string.gsub(lfs.currentdir(), "(.*)/.*", "%1")
+ else
+ repodirs[1] = lfs.currentdir()
+ end
+end
+
+if subcmd[cmd] and type(subcmd[cmd].run) == "function" then
+ for _, dir in pairs(repodirs) do
+ local db = require('aports.db').new(dir:match("(.*)/([^/]*)"))
+ subcmd[cmd].run(db, opts)
+ end
+else
+ io.stderr:write(cmd..": invalid subcommand\n")
+end