nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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''