1 #!/usr/bin/env nix-shell
2 #!nix-shell -i bash -p curl gnugrep gnused jq nix-prefetch
6 dirname=$
(realpath
"$(dirname "$0")")
7 nixpkgs
=$
(realpath
"${dirname}/../../../..")
9 old_rover_version
=$
(nix
eval --raw -f "$nixpkgs" rover.version
)
10 rover_url
=https
://api.github.com
/repos
/apollographql
/rover
/releases
/latest
11 rover_tag
=$
(curl
"$rover_url" | jq
--raw-output ".tag_name")
12 rover_version
="$(expr "$rover_tag" : 'v\(.*\)')"
14 if [[ "$old_rover_version" == "$rover_version" ]]; then
15 echo "rover is up-to-date: ${old_rover_version}"
20 rover_tar_url
="https://github.com/apollographql/rover/archive/refs/tags/${rover_tag}.tar.gz"
24 } < <(nix-prefetch-url
"$rover_tar_url" --unpack --type sha256
--print-path)
26 # Convert hash to SRI representation
27 rover_sri_hash
=$
(nix
hash to-sri
--type sha256
"$rover_hash")
29 # Update rover version.
31 "s|version = \"[0-9.]*\"|version = \"$rover_version\"|" \
32 "$dirname/default.nix"
36 "s|sha256 = \"[a-zA-Z0-9\/+-=]*\"|sha256 = \"$rover_sri_hash\"|" \
37 "$dirname/default.nix"
41 "s|cargoSha256 = \".*\"|cargoSha256 = \"sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=\"|" \
42 "$dirname/default.nix"
45 echo "Computing cargoSha256"
47 nix-prefetch
"{ sha256 }: (import $nixpkgs {}).rover.cargoDeps.overrideAttrs (_: { outputHash = sha256; })"
50 "s|cargoSha256 = \".*\"|cargoSha256 = \"$cargoSha256\"|" \
51 "$dirname/default.nix"
53 # Update apollo api schema info
55 schemaUrl
=https
://graphql.api.apollographql.com
/api
/schema
57 mkdir
-p "$dirname"/schema
60 echo "Fetching Apollo GraphQL schema"
61 # include response headers, and append terminating newline to response body
62 curl
--include --write-out "\n" "$schemaUrl" > "$response"
64 # Parse response headers and write the etag to schema/etag.id
71 > "$dirname"/schema
/etag.id
73 # Discard headers and blank line (terminated by carriage return), and write the
74 # response body to schema/schema.graphql
75 sed '1,/^\r/d' "$response" > "$dirname"/schema
/schema.graphql