nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 77 lines 2.2 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=prometheus 7REPO=prometheus 8 9# Current version. 10LATEST_NIXPKGS_VERSION=$(nix eval --raw .#prometheus.version 2>/dev/null) 11UPDATE_NIX_OLD_VERSION=${UPDATE_NIX_OLD_VERSION:-$LATEST_NIXPKGS_VERSION} 12 13TARGET_TAG="$(curl -L -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} "https://api.github.com/repos/$OWNER/$REPO/releases/latest" | jq -r '.tag_name')" 14TARGET_VERSION="$(echo "$TARGET_TAG" | sed -e 's/^v//')" 15 16if [[ "$UPDATE_NIX_OLD_VERSION" == "$TARGET_VERSION" ]]; then 17 # prometheus is up-to-date 18 if [[ -n "$UPDATE_NIX_ATTR_PATH" ]]; then 19 echo "[{}]"; 20 fi 21 22 exit 0 23fi 24 25extractVendorHash() { 26 original="${1?original hash missing}" 27 result="$(nix-build -A prometheus.goModules 2>&1 | tail -n3 | grep 'got:' | cut -d: -f2- | xargs echo || true)" 28 [ -z "$result" ] && { echo "$original"; } || { echo "$result"; } 29} 30 31TMP=$(mktemp -d) 32trap 'rm -rf "$TMP"' EXIT 33 34NIXPKGS_PROMETHEUS_PATH=$(cd $(dirname ${BASH_SOURCE[0]}); pwd -P)/ 35SOURCE_NIX="$NIXPKGS_PROMETHEUS_PATH/source.nix" 36 37PREFETCH_JSON=$TMP/prefetch.json 38nix-prefetch-git --rev "$TARGET_TAG" --url "https://github.com/$OWNER/$REPO" > "$PREFETCH_JSON" 39PREFETCH_HASH="$(jq '.hash' -r < "$PREFETCH_JSON")" 40PREFETCH_PATH="$(jq '.path' -r < "$PREFETCH_JSON")" 41NPM_DEPS_HASH="$(prefetch-npm-deps "$PREFETCH_PATH/web/ui/package-lock.json")" 42 43FAKE_HASH="sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; 44 45cat > "$SOURCE_NIX" <<-EOF 46{ 47 version = "$TARGET_VERSION"; 48 hash = "$PREFETCH_HASH"; 49 npmDepsHash = "$NPM_DEPS_HASH"; 50 vendorHash = "$FAKE_HASH"; 51} 52EOF 53 54GO_HASH="$(nix-instantiate --eval -A prometheus.vendorHash | tr -d '"')" 55VENDOR_HASH=$(extractVendorHash "$GO_HASH") 56 57cat > "$SOURCE_NIX" <<-EOF 58{ 59 version = "$TARGET_VERSION"; 60 hash = "$PREFETCH_HASH"; 61 npmDepsHash = "$NPM_DEPS_HASH"; 62 vendorHash = "$VENDOR_HASH"; 63} 64EOF 65 66if [[ -z "$UPDATE_NIX_ATTR_PATH" ]]; then 67 exit 0 68fi 69 70cat <<-EOF 71[{ 72 "attrPath": "$UPDATE_NIX_ATTR_PATH", 73 "oldVersion": "$UPDATE_NIX_OLD_VERSION", 74 "newVersion": "$TARGET_VERSION", 75 "files": ["$SOURCE_NIX"] 76}] 77EOF