about summary refs log tree commit diff stats
path: root/scripts/why-depends
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/why-depends')
-rwxr-xr-xscripts/why-depends50
1 files changed, 35 insertions, 15 deletions
diff --git a/scripts/why-depends b/scripts/why-depends
index 1afe9150..61f40c5d 100755
--- a/scripts/why-depends
+++ b/scripts/why-depends
@@ -1,23 +1,43 @@
 #! /usr/bin/env sh
 
-search_string="$1-"
-shift 1
+main() {
+    use_running="$1"
+    host="$2"
+    package="$3"
 
-if [ "$1" != "" ]; then
-    # Add the version
-    search_string="${search_string}${1}$"
-    shift 1
-fi
+    if [ "$use_running" = "true" ]; then
+        base="/run/current-system"
+    else
+        base=".#nixosConfigurations.$host.config.system.build.toplevel"
+    fi
 
-if [ "$1" = "--running" ]; then
-    shift 1
-    base="/run/current-system"
-else
-    host="$(hostname)"
-    base=".#nixosConfigurations.$host.config.system.build.toplevel"
-fi
+    fd "[a-zA-Z0-9]{32}-$package-" /nix/store --type directory --threads 1 --exec nix why-depends "$base"
+}
+
+running=false
+host="$(hostname)"
+packages=""
 
+while [ "$#" -ne 0 ]; do
+    case "$1" in
+    "--running")
+        running=true
+        ;;
+    "--host")
+        shift 1
+        host="$1"
+        ;;
+    *)
+        # Treat everything else as a package to check
+        packages="$packages $1"
+        ;;
+    esac
+
+    shift 1
+done
 
-fd "$search_string" /nix/store --type directory --threads 1 --exec nix why-depends "$@" "$base"
+for package in $packages; do
+    main "$running" "$host" "$package"
+done
 
 # vim: ft=sh