-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathupdate
More file actions
executable file
·102 lines (81 loc) · 2.22 KB
/
Copy pathupdate
File metadata and controls
executable file
·102 lines (81 loc) · 2.22 KB
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix curl jq --pure
# vim: filetype=sh
set -euo pipefail
banner() {
echo
echo "--- $*"
echo
}
update() {
local versions="$1"
local package="$2"
echo "Versions file: $versions"
echo "Package to update: $package"
local owner=$(cat $versions | jq -r ".[\"$package\"].owner")
local repo=$(cat $versions | jq -r ".[\"$package\"].repo")
local branch=$(cat $versions | jq -r ".[\"$package\"].branch")
local rev=$(cat $versions | jq -r ".[\"$package\"].rev")
local sha256=$(cat $versions | jq -r ".[\"$package\"].sha256")
echo "Owner: $owner"
echo "Repository: $repo"
echo "Branch: $branch"
case "$PREFETCH_ONLY" in
TRUE)
local new_rev=$rev
echo "Using existing revision"
;;
FALSE)
local new_rev=$(curl -sfL \
https://api.github.com/repos/$owner/$repo/git/refs/heads/$branch \
| jq -r .object.sha)
echo "Fetching latest revision on branch $branch"
;;
esac
echo "The following revision will be used:"
echo " $new_rev"
local url=https://github.com/$owner/$repo/archive/$new_rev.tar.gz
local new_sha256=$(nix-prefetch-url --unpack "$url")
echo "The following url will be used:"
echo " $url"
echo "The following sha256 will be used:"
echo " $new_sha256"
res=$(cat $versions \
| jq -rM ".[\"$package\"].rev = \"$new_rev\"" \
| jq -rM ".[\"$package\"].sha256 = \"$new_sha256\""
)
echo "New versions file:"
echo "$res"
echo "$res" > $versions
}
ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )"/.. >/dev/null && pwd )"
VERSIONS_DEF="$ROOT/nix/versions.json"
PACKAGES_DEF="$(cat $VERSIONS_DEF | jq -r 'keys | .[]')"
VERSIONS="$VERSIONS_DEF"
echo "Using versions file ${VERSIONS}"
PREFETCH_ONLY="FALSE"
PACKAGES=""
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
--prefetch)
PREFETCH_ONLY="TRUE"
shift
;;
*)
PACKAGES="$key $PACKAGES"
shift # past value
;;
esac
done
if [ -z "$PACKAGES" ];
then
PACKAGES="$PACKAGES_DEF"
fi
echo "Using packages:"
for p in $PACKAGES; do echo " - $p"; done
for p in $PACKAGES; do
banner "$p"
update "$VERSIONS" "$p"
done