about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/rure/update.sh
blob: 6e85d7cf03a73f9e23dd70856f411dbbd53e5684 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env nix-shell
#! nix-shell -p nix jq curl cargo rsync
#! nix-shell -i bash

set -eu

cd "$(dirname "$0")"

crate=rure

echo "Getting latest version from crates.io API" >&2

curlOpts=(
  -H "Accept: application/json"
  -H "User-Agent: $crate update script (https://github.com/nixos/nixpkgs/)"
)

version="$(curl "${curlOpts[@]}" "https://crates.io/api/v1/crates/$crate" \
  | jq -r .crate.max_stable_version)"

echo "Prefetching latest tarball from crates.io" >&2

url="https://crates.io/api/v1/crates/$crate/$version/download"
prefetch="$(nix-prefetch-url --print-path --type sha256 --unpack "$url")"

cat > pin.json <<EOF
{
  "pname": "$crate",
  "version": "$version",
  "sha256": "$(printf '%s' "$prefetch" | head -n1)"
}
EOF

echo "Generating updated Cargo.lock" >&2

tmp="$(mktemp -d)"

cleanup() {
  echo "Removing $tmp" >&2
  rm -rf "$tmp"
}

trap cleanup EXIT

rsync -a --chmod=ugo=rwX "$(printf '%s' "$prefetch" | tail -n1)/" "$tmp"

pushd "$tmp"
cargo update
popd

cp "$tmp/Cargo.lock" ./Cargo.lock