at master 1.7 kB view raw
1#! /usr/bin/env nix-shell 2#! nix-shell -i bash 3#! nix-shell -p git -I nixpkgs=. 4set -euo pipefail 5 6filesToStage=( 7 'pkgs/data/misc/hackage/pin.json' 8 'pkgs/development/haskell-modules/configuration-hackage2nix/stackage.yaml' 9 'pkgs/development/haskell-modules/hackage-packages.nix' 10) 11 12if ! git diff --quiet --cached; then 13 echo "Please commit staged changes before running $0" >&2 14 exit 100 15fi 16 17if ! git diff --quiet -- "${filesToStage[@]}"; then 18 echo -n "Please commit your changes to the following files before running $0: " >&2 19 echo "${filesToStage[@]}" >&2 20 exit 100 21fi 22 23stackage_diff="$(./maintainers/scripts/haskell/update-stackage.sh)" 24hackage_diff="$(./maintainers/scripts/haskell/update-hackage.sh)" 25readonly stackage_diff hackage_diff 26 27# Prefer Stackage version diff in the commit header, fall back to Hackage 28if [[ -n "$stackage_diff" ]]; then 29 commit_message="haskellPackages: stackage $stackage_diff" 30 if [[ -n "$hackage_diff" ]]; then 31 commit_message="$commit_message 32 33all-cabal-hashes: $hackage_diff" 34 fi 35elif [[ -n "$hackage_diff" ]]; then 36 commit_message="haskellPackages: hackage $hackage_diff 37 38all-cabal-hashes: $hackage_diff" 39else 40 echo "Neither Hackage nor Stackage changed. Nothing to do." >&2 41 exit 0 42fi 43 44commit_message="$commit_message 45 46(generated by maintainers/scripts/haskell/update-package-set.sh)" 47 48# Using fast here because after the hackage-update eval errors will likely break the transitive dependencies check. 49./maintainers/scripts/haskell/regenerate-hackage-packages.sh --fast 50 51# A --do-commit flag probably doesn't make much sense 52git add -- "${filesToStage[@]}" 53git commit -m "$commit_message"