summary refs log tree commit diff
path: root/pkgs/build-support/fetchhg
diff options
context:
space:
mode:
authorBenjamin Staffin <benley@gmail.com>2015-08-28 20:28:32 -0700
committerRok Garbas <rok@garbas.si>2016-02-17 00:35:30 +0100
commitfc85f1beedffe55925484747944873fab59f9a06 (patch)
treeb096f47e4b21fd269863225d2e8a7c60425d63a3 /pkgs/build-support/fetchhg
parentef4ea6d67384002c0c3e9bb11137de690352ff61 (diff)
downloadnixpkgs-fc85f1beedffe55925484747944873fab59f9a06.tar
nixpkgs-fc85f1beedffe55925484747944873fab59f9a06.tar.gz
nixpkgs-fc85f1beedffe55925484747944873fab59f9a06.tar.bz2
nixpkgs-fc85f1beedffe55925484747944873fab59f9a06.tar.lz
nixpkgs-fc85f1beedffe55925484747944873fab59f9a06.tar.xz
nixpkgs-fc85f1beedffe55925484747944873fab59f9a06.tar.zst
nixpkgs-fc85f1beedffe55925484747944873fab59f9a06.zip
nix-prefetch-hg: Various bash style improvements, fixes #9511
Diffstat (limited to 'pkgs/build-support/fetchhg')
-rwxr-xr-xpkgs/build-support/fetchhg/nix-prefetch-hg68
1 files changed, 34 insertions, 34 deletions
diff --git a/pkgs/build-support/fetchhg/nix-prefetch-hg b/pkgs/build-support/fetchhg/nix-prefetch-hg
index 7143eecfe5c..94c6b1ec694 100755
--- a/pkgs/build-support/fetchhg/nix-prefetch-hg
+++ b/pkgs/build-support/fetchhg/nix-prefetch-hg
@@ -5,79 +5,79 @@ url=$1
 rev=$2
 expHash=$3
 
-hashType=$NIX_HASH_ALGO
-if test -z "$hashType"; then
-    hashType=sha256
-fi
-if test -z "$hashFormat"; then
-    hashFormat=--base32
-fi
+hashType="${NIX_HASH_ALGO:-sha256}"
+hashFormat=${hashFormat:-"--base32"}
+rev="${rev:-tip}"
+
+LOG() {
+  echo "$@" >&2
+}
 
-if test -z "$url"; then
-    echo "syntax: nix-prefetch-hg URL [rev [EXPECTED-HASH]]" >&2
-    exit 1
+die() {
+  LOG "$@"
+  exit 1
+}
+
+if [[ -z "$url" || "$url" == "--help" ]]; then
+    die "Usage: nix-prefetch-hg URL [rev [EXPECTED-HASH]]"
 fi
 
-if test "$fetchSubrepos" == 1; then
+if [[ "${fetchSubrepos:-0}" == 1 ]]; then
     subrepoClause=S
 else
     subrepoClause=
 fi
 
-test -n "$rev" || rev="tip"
-
-
 # If the hash was given, a file with that hash may already be in the
 # store.
-if test -n "$expHash"; then
+if [[ -n "$expHash" ]]; then
     finalPath=$(nix-store --print-fixed-path --recursive "$hashType" "$expHash" hg-archive)
     if ! nix-store --check-validity "$finalPath" 2> /dev/null; then
         finalPath=
     fi
-    hash=$expHash
+    hash="$expHash"
 fi
 
 
 # If we don't know the hash or a path with that hash doesn't exist,
 # download the file and add it to the store.
-if test -z "$finalPath"; then
+if [[ -z "$finalPath" ]]; then
 
     tmpPath="$(mktemp -d "${TMPDIR:-/tmp}/hg-checkout-tmp-XXXXXXXX")"
-    trap "rm -rf \"$tmpPath\"" EXIT
+    cleanup() { x=$?; rm -rf "$tmpPath"; exit $x; }; trap cleanup EXIT
 
     tmpArchive="$tmpPath/hg-archive"
 
     # Perform the checkout.
-    if [[ $url != /* ]]; then
-      tmpClone=$tmpPath/hg-clone
-      hg clone -q -y -U "$url" $tmpClone >&2
+    if [[ "$url" != /* ]]; then
+      tmpClone="$tmpPath/hg-clone"
+      hg clone -q -y -U "$url" "$tmpClone" >&2
     else
       tmpClone=$url
     fi
-    hg archive -q$subrepoClause -y -r "$rev" --cwd $tmpClone $tmpArchive
-    rm -f $tmpArchive/.hg_archival.txt
+    hg archive -q$subrepoClause -y -r "$rev" --cwd "$tmpClone" "$tmpArchive"
+    rm -f "$tmpArchive/.hg_archival.txt"
 
-    echo "hg revision is $(cd $tmpClone; hg id -r "$rev" -i)"
+    LOG "hg revision is $(cd "$tmpClone"; hg id -r "$rev" -i)"
 
     # Compute the hash.
-    hash=$(nix-hash --type $hashType $hashFormat $tmpArchive)
-    if ! test -n "$QUIET"; then echo "hash is $hash" >&2; fi
+    hash=$(nix-hash --type "$hashType" "$hashFormat" "$tmpArchive")
+    if [[ -z "$QUIET" ]]; then LOG "hash is $hash"; fi
 
     # Add the downloaded file to the Nix store.
-    finalPath=$(nix-store --add-fixed --recursive "$hashType" $tmpArchive)
+    finalPath=$(nix-store --add-fixed --recursive "$hashType" "$tmpArchive")
 
-    if test -n "$expHash" -a "$expHash" != "$hash"; then
-        echo "hash mismatch for URL \`$url'"
-        exit 1
+    if [[ -n "$expHash" && "$expHash" != "$hash" ]]; then
+        die "ERROR: hash mismatch for URL \`$url'"
     fi
 
 
 fi
 
-if ! test -n "$QUIET"; then echo "path is $finalPath" >&2; fi
+if [[ -z "$QUIET" ]]; then LOG "path is $finalPath"; fi
 
-echo $hash
+echo "$hash"
 
-if test -n "$PRINT_PATH"; then
-    echo $finalPath
+if [[ -n "$PRINT_PATH" ]]; then
+    echo "$finalPath"
 fi