summarylogtreecommitdiffstats
path: root/optdepends.awk
diff options
context:
space:
mode:
authorNikita Ivanov2022-07-27 02:13:30 +0500
committerNikita Ivanov2022-07-27 02:13:30 +0500
commit16e5affa96b125158ba1c903f4ea1fe9d2d83076 (patch)
tree52fbc32813d76e36525fbb447267f1e57c05ad87 /optdepends.awk
parente9fca8a02c2c7bc2ccf8527911513017fb29723b (diff)
downloadaur-16e5affa96b125158ba1c903f4ea1fe9d2d83076.tar.gz
Update optdepends
Diffstat (limited to 'optdepends.awk')
-rwxr-xr-xoptdepends.awk55
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
+}