diff options
| author | Jakub Jirutka <jakub@jirutka.cz> | 2017-07-25 21:44:50 +0200 |
|---|---|---|
| committer | Jakub Jirutka <jakub@jirutka.cz> | 2017-07-25 21:44:50 +0200 |
| commit | a66abec72346d0bd50d0dad6c02c2fc8023e277a (patch) | |
| tree | da36dddf35be68bbac04ce9a3b161a59e96b4aa4 /bin/ap.lua | |
| parent | b8151f36204607d1697701ad6174af2073ffa77c (diff) | |
| download | lua-aports-a66abec72346d0bd50d0dad6c02c2fc8023e277a.tar.bz2 lua-aports-a66abec72346d0bd50d0dad6c02c2fc8023e277a.tar.xz | |
move binfiles to bin/ directory
Diffstat (limited to 'bin/ap.lua')
| -rwxr-xr-x | bin/ap.lua | 153 |
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 |
