about summary refs log tree commit diff
path: root/bin/__dispatch.sh
diff options
context:
space:
mode:
Diffstat (limited to 'bin/__dispatch.sh')
-rwxr-xr-xbin/__dispatch.sh64
1 files changed, 64 insertions, 0 deletions
diff --git a/bin/__dispatch.sh b/bin/__dispatch.sh
new file mode 100755
index 000000000000..a4fa75358def
--- /dev/null
+++ b/bin/__dispatch.sh
@@ -0,0 +1,64 @@
+#!/usr/bin/env bash
+# This script dispatches invocations transparently to programs instantiated from
+# Nix.
+#
+# To add a new tool, insert it into the case statement below by setting `attr`
+# to the key in nixpkgs which represents the program you want to run.
+set -ueo pipefail
+
+readonly REPO_ROOT=$(dirname "$0")/..
+TARGET_TOOL=$(basename "$0")
+
+case "${TARGET_TOOL}" in
+  age)
+    attr="third_party.age"
+    ;;
+  age-keygen)
+    attr="third_party.age"
+    ;;
+  depot-build)
+    attr="tools.depot-build"
+    ;;
+  gerrit)
+    attr="tools.gerrit-cli"
+    ;;
+  gerrit-update)
+    attr="tools.gerrit-update"
+    ;;
+  hash-password)
+    attr="tools.hash-password"
+    ;;
+  kontemplate)
+    attr="kontemplate"
+    ;;
+  meson)
+    attr="third_party.meson"
+    ;;
+  ninja)
+    attr="third_party.ninja"
+    ;;
+  perf-flamegraph)
+    attr="tools.perf-flamegraph"
+    ;;
+  rebuild-system)
+    attr="ops.nixos.rebuild-system"
+    ;;
+  rebuilder)
+    attr="users.tazjin.nixos.rebuilder"
+    ;;
+  rink)
+    attr="third_party.rink"
+    ;;
+  stern)
+    attr="third_party.stern"
+    ;;
+  *)
+    echo "The tool '${TARGET_TOOL}' is currently not installed in this repository."
+    exit 1
+    ;;
+esac
+
+result=$(nix-build --no-out-link --attr "${attr}" "${REPO_ROOT}")
+PATH="${result}/bin:$PATH"
+
+exec "${TARGET_TOOL}" "${@}"