nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 60 lines 1.5 kB view raw
1{ 2 lib, 3 curl, 4 writeShellScript, 5 jq, 6 gnused, 7 git, 8 nix, 9 coreutils, 10}: 11{ 12 platforms, 13 pname, 14 version, 15}: 16 17writeShellScript "${pname}-update-script" '' 18 set -o errexit 19 PATH=${ 20 lib.makeBinPath [ 21 curl 22 jq 23 gnused 24 git 25 nix 26 coreutils 27 ] 28 } 29 30 latest_version=$(curl -s "https://api.github.com/repos/VirtusLab/scala-cli/releases?per_page=1" | jq ".[0].tag_name" --raw-output | sed 's/^v//') 31 32 if [[ "${version}" = "$latest_version" ]]; then 33 echo "The new version same as the old version." 34 exit 0 35 fi 36 37 nixpkgs=$(git rev-parse --show-toplevel) 38 sources_json="$nixpkgs/pkgs/by-name/sc/scala-cli/sources.json" 39 40 platform_assets=() 41 42 for platform in ${lib.concatStringsSep " " platforms}; do 43 asset=$(jq ".assets.\"$platform\".asset" --raw-output < $sources_json) 44 release_asset_url="https://github.com/Virtuslab/scala-cli/releases/download/v$latest_version/$asset" 45 46 asset_hash=$(nix-prefetch-url "$release_asset_url") 47 48 asset_object=$(jq --compact-output --null-input \ 49 --arg asset "$asset" \ 50 --arg sha256 "$asset_hash" \ 51 --arg platform "$platform" \ 52 '{asset: $asset, sha256: $sha256, platform: $platform}') 53 platform_assets+=($asset_object) 54 done 55 56 printf '%s\n' "''${platform_assets[@]}" | \ 57 jq -s "map ( { (.platform): . | del(.platform) }) | add" | \ 58 jq --arg version $latest_version \ 59 '{ version: $version, assets: . }' > $sources_json 60''