diff options
author | Nikita Ivanov | 2022-07-27 02:13:30 +0500 |
---|---|---|
committer | Nikita Ivanov | 2022-07-27 02:13:30 +0500 |
commit | 16e5affa96b125158ba1c903f4ea1fe9d2d83076 (patch) | |
tree | 52fbc32813d76e36525fbb447267f1e57c05ad87 /optdepends.awk | |
parent | e9fca8a02c2c7bc2ccf8527911513017fb29723b (diff) | |
download | aur-16e5affa96b125158ba1c903f4ea1fe9d2d83076.tar.gz |
Update optdepends
Diffstat (limited to 'optdepends.awk')
-rwxr-xr-x | optdepends.awk | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/optdepends.awk b/optdepends.awk new file mode 100755 index 000000000000..cabc40a24162 --- /dev/null +++ b/optdepends.awk @@ -0,0 +1,55 @@ +#!/usr/bin/gawk -f + +@include "join" +@include "inplace" + +function getpackage(exe, c, s, a) { + c = sprintf("pacman -Fqx '(^|/)bin/([a-z0-9_-]+/)?%s$'", exe) + + printf "Running %s\n", c > "/dev/stderr" + + c | getline s + close(c) + + split(s, a, "/") + return a[2] +} + +BEGIN { + for (i = 1; i < ARGC; i++) + delete ARGV[i] + + ARGV[1] = "PKGBUILD" + ARGC = 2 + + FS = "\t" + + cmd = "src/ctpv/deptable/list.awk src/ctpv/sh/prev/*" + + while ((cmd | getline) > 0) { + progs_len = split($2, progs, " ") + + for (i = 1; i <= progs_len; i++) { + p = getpackage(progs[i]) + package_progs[p][package_progs_len[p]++] = $1 + } + } + + close(cmd) + + for (p in package_progs) { + types = join(package_progs[p], 0, package_progs_len[p] - 1, ", ") + list = list sprintf(" '%s: for %s files'\n", p, types) + } +} + +/^\)/ { + opts = 0 +} + +!opts + +/^optdepends=\(/ { + printf "%s", list | "sort" + opts = 1 +} |