about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/diffoscope/list-missing-tools.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/diffoscope/list-missing-tools.sh')
-rwxr-xr-xnixpkgs/pkgs/tools/misc/diffoscope/list-missing-tools.sh23
1 files changed, 23 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/diffoscope/list-missing-tools.sh b/nixpkgs/pkgs/tools/misc/diffoscope/list-missing-tools.sh
new file mode 100755
index 000000000000..5f4d118cfed7
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/diffoscope/list-missing-tools.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+# This script lists all the optional command-line tools that diffoscope can use
+# (i.e. `diffoscope --list-tools`) but are missing from the Nix expression.
+
+diffoscope=$(nix-build --no-out-link -E 'with import ./. {}; diffoscope.override { enableBloat = true; }')/bin/diffoscope
+
+required=$($diffoscope --list-tools | \
+    grep '^External-Tools-Required:' | \
+    cut -d ' ' -f2- | \
+    tr -d ,)
+
+# Uber-hacky!
+pathScript=$(cat $diffoscope | grep PATH)
+
+export PATH=$(nix-build --no-out-link -A which)/bin
+eval "$pathScript"
+
+for tool in $required; do
+    if ! which $tool >/dev/null 2>&1; then
+        echo $tool
+    fi
+done | sort