about summary refs log tree commit diff
path: root/nixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh')
-rwxr-xr-xnixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh25
1 files changed, 23 insertions, 2 deletions
diff --git a/nixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh b/nixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh
index 8c39d289f7aa..86fecbc3d87c 100755
--- a/nixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh
+++ b/nixpkgs/maintainers/scripts/haskell/upload-nixos-package-list-to-hackage.sh
@@ -15,8 +15,29 @@
 #      password-command: pass hackage.haskell.org (this can be any command, but not an arbitrary shell expression. Like cabal we only read the first output line and ignore the rest.)
 # Those fields are specified under `upload` on the `cabal` man page.
 
+if test -z "$CABAL_DIR"; then
+  dirs=(
+    "$HOME/.cabal"
+    "${XDG_CONFIG_HOME:-$HOME/.config}/cabal"
+  )
+  missing=true
+
+  for dir in "${dirs[@]}"; do
+    if test -d "$dir"; then
+      export CABAL_DIR="$dir"
+      missing=false
+      break
+    fi
+  done
+
+  if $missing; then
+    echo "Could not find the cabal configuration directory in any of: ${dirs[@]}" >&2
+    exit 101
+  fi
+fi
+
 package_list="$(nix-build -A haskell.package-list)/nixos-hackage-packages.csv"
-username=$(grep "^username:" ~/.cabal/config | sed "s/^username: //")
-password_command=$(grep "^password-command:" ~/.cabal/config | sed "s/^password-command: //")
+username=$(grep "^username:" "$CABAL_DIR/config" | sed "s/^username: //")
+password_command=$(grep "^password-command:" "$CABAL_DIR/config" | sed "s/^password-command: //")
 curl -u "$username:$($password_command | head -n1)" --digest -H "Content-type: text/csv" -T "$package_list" http://hackage.haskell.org/distro/NixOS/packages.csv
 echo