about summary refs log tree commit diff
path: root/pkgs/applications/version-management/git-and-tools
diff options
context:
space:
mode:
authorhyperfekt <git@hyperfekt.net>2019-02-23 19:31:53 +0100
committerLassulus <github@lassul.us>2019-05-19 01:20:13 +0900
commitde5a9dea8812f0d57c31aaaf2b938a85876bd321 (patch)
treeed4c015126b64eaaf39dce34c86ce1a73eeadba6 /pkgs/applications/version-management/git-and-tools
parent13b97cffaef8174bf4183d806ff97c57f855c6fe (diff)
downloadnixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.tar
nixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.tar.gz
nixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.tar.bz2
nixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.tar.lz
nixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.tar.xz
nixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.tar.zst
nixlib-de5a9dea8812f0d57c31aaaf2b938a85876bd321.zip
gitAndTools.transcrypt: query dependencies in helper scripts
adds a tool to get the paths of the dependencies needed by the helper scripts
(which are written only once and are never updated) to the output and patches
them to use it expand their path
Diffstat (limited to 'pkgs/applications/version-management/git-and-tools')
-rw-r--r--pkgs/applications/version-management/git-and-tools/transcrypt/default.nix8
-rw-r--r--pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch37
2 files changed, 45 insertions, 0 deletions
diff --git a/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix b/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix
index 8218ad6ffa82..cea588f76ca2 100644
--- a/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix
+++ b/pkgs/applications/version-management/git-and-tools/transcrypt/default.nix
@@ -13,6 +13,8 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ makeWrapper git openssl coreutils utillinux gnugrep gnused gawk ];
 
+  patches = [ ./helper-scripts_depspathprefix.patch ];
+
   installPhase = ''
     install -m 755 -D transcrypt $out/bin/transcrypt
     install -m 644 -D man/transcrypt.1 $out/share/man/man1/transcrypt.1
@@ -21,6 +23,12 @@ stdenv.mkDerivation rec {
 
     wrapProgram $out/bin/transcrypt \
       --prefix PATH : "${stdenv.lib.makeBinPath [ git openssl coreutils utillinux gnugrep gnused gawk ]}"
+
+    cat > $out/bin/transcrypt-depspathprefix << EOF
+    #!${stdenv.shell}
+    echo "${stdenv.lib.makeBinPath [ git openssl coreutils gawk ]}:"
+    EOF
+    chmod +x $out/bin/transcrypt-depspathprefix
   '';
 
   meta = with stdenv.lib; {
diff --git a/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch b/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch
new file mode 100644
index 000000000000..925aadab3dd5
--- /dev/null
+++ b/pkgs/applications/version-management/git-and-tools/transcrypt/helper-scripts_depspathprefix.patch
@@ -0,0 +1,37 @@
+diff --git a/transcrypt b/transcrypt
+index a0b562d..7888f5d 100755
+--- a/transcrypt
++++ b/transcrypt
+@@ -278,6 +278,7 @@ save_helper_scripts() {
+ 
+ 	cat <<-'EOF' > "${GIT_DIR}/crypt/clean"
+ 		#!/usr/bin/env bash
++		PATH="$(transcrypt-depspathprefix 2>/dev/null)$PATH"
+ 		filename=$1
+ 		# ignore empty files
+ 		if [[ -s $filename ]]; then
+@@ -300,6 +301,7 @@ save_helper_scripts() {
+ 
+ 	cat <<-'EOF' > "${GIT_DIR}/crypt/smudge"
+ 		#!/usr/bin/env bash
++		PATH="$(transcrypt-depspathprefix 2>/dev/null)$PATH"
+ 		tempfile=$(mktemp 2> /dev/null || mktemp -t tmp)
+ 		trap 'rm -f "$tempfile"' EXIT
+ 		cipher=$(git config --get --local transcrypt.cipher)
+@@ -309,6 +311,7 @@ save_helper_scripts() {
+ 
+ 	cat <<-'EOF' > "${GIT_DIR}/crypt/textconv"
+ 		#!/usr/bin/env bash
++		PATH="$(transcrypt-depspathprefix 2>/dev/null)$PATH"
+ 		filename=$1
+ 		# ignore empty files
+ 		if [[ -s $filename ]]; then
+@@ -351,7 +354,7 @@ save_configuration() {
+ 	git config merge.renormalize 'true'
+ 
+ 	# add a git alias for listing encrypted files
+-	git config alias.ls-crypt "!git ls-files | git check-attr --stdin filter | awk 'BEGIN { FS = \":\" }; /crypt$/{ print \$1 }'"
++	git config alias.ls-crypt "!PATH=\"\$(transcrypt-depspathprefix 2>/dev/null)\$PATH\"; git ls-files | git check-attr --stdin filter | awk 'BEGIN { FS = \":\" }; /crypt$/{ print \$1 }'"
+ }
+ 
+ # display the current configuration settings