Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at devShellTools-shell 73 lines 2.0 kB view raw
1#!/usr/bin/env nix-shell 2#!nix-shell -i bash -p nix coreutils curl jq nix-prefetch-git prefetch-npm-deps 3 4set -euo pipefail 5 6OWNER=axllent 7REPO=mailpit 8 9TARGET_TAG="$(curl -L -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} "https://api.github.com/repos/$OWNER/$REPO/releases/latest" | jq -r '.tag_name')" 10TARGET_VERSION="$(echo "$TARGET_TAG" | sed -e 's/^v//')" 11 12if [[ "$UPDATE_NIX_OLD_VERSION" == "$TARGET_VERSION" ]]; then 13 # mailpit is up-to-date 14 if [[ -n "$UPDATE_NIX_ATTR_PATH" ]]; then 15 echo "[{}]"; 16 fi 17 18 exit 0 19fi 20 21extractVendorHash() { 22 original="${1?original hash missing}" 23 result="$(nix-build -A mailpit.goModules 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" 24 [ -z "$result" ] && { echo "$original"; } || { echo "$result"; } 25} 26 27TMP="$(mktemp -d)" 28trap 'rm -rf "$TMP"' exit 29 30NIXPKGS_MAILPIT_PATH=$(cd $(dirname ${BASH_SOURCE[0]}); pwd -P)/ 31SOURCE_NIX="$NIXPKGS_MAILPIT_PATH/source.nix" 32 33PREFETCH_JSON=$TMP/prefetch.json 34nix-prefetch-git --rev "$TARGET_TAG" --url "https://github.com/$OWNER/$REPO" > "$PREFETCH_JSON" 35PREFETCH_HASH="$(jq '.hash' -r < "$PREFETCH_JSON")" 36PREFETCH_PATH="$(jq '.path' -r < "$PREFETCH_JSON")" 37NPM_DEPS_HASH="$(prefetch-npm-deps $PREFETCH_PATH/package-lock.json)" 38 39FAKE_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; 40 41cat > $SOURCE_NIX <<-EOF 42{ 43 version = "$TARGET_VERSION"; 44 hash = "$PREFETCH_HASH"; 45 npmDepsHash = "$NPM_DEPS_HASH"; 46 vendorHash = "$FAKE_HASH"; 47} 48EOF 49 50GO_HASH="$(nix-instantiate --eval -A mailpit.vendorHash | tr -d '"')" 51VENDOR_HASH=$(extractVendorHash "$GO_HASH") 52 53cat > $SOURCE_NIX <<-EOF 54{ 55 version = "$TARGET_VERSION"; 56 hash = "$PREFETCH_HASH"; 57 npmDepsHash = "$NPM_DEPS_HASH"; 58 vendorHash = "$VENDOR_HASH"; 59} 60EOF 61 62if [[ -z "$UPDATE_NIX_ATTR_PATH" ]]; then 63 exit 0 64fi 65 66cat <<-EOF 67[{ 68 "attrPath": "$UPDATE_NIX_ATTR_PATH", 69 "oldVersion": "$UPDATE_NIX_OLD_VERSION", 70 "newVersion": "$TARGET_VERSION", 71 "files": ["$SOURCE_NIX"] 72}] 73EOF