1wine_url_base=https://dl.winehq.org/wine
2
3sed_exprs=()
4
5get_source_attr() {
6 nix-instantiate --eval --json -E "(let pkgs = import ./. {}; in pkgs.callPackage $sources_file { inherit pkgs; }).$1" | jq -r
7}
8
9set_source_attr() {
10 path="$1"
11 name="$2"
12 value="$3"
13 line=$(nix-instantiate --eval -E "(builtins.unsafeGetAttrPos \"$name\" (let pkgs = import ./. {}; in pkgs.callPackage $sources_file { inherit pkgs; }).$path).line")
14 sed_exprs+=(-e "${line}s@[^ ].*\$@$name = $value;@")
15}
16
17set_version_and_hash() {
18 set_source_attr "$1" version "\"$2\""
19 set_source_attr "$1" hash "\"$(to_sri "$3")\""
20}
21
22get_latest_wine_version() {
23 list-directory-versions --pname=wine --url="$wine_url_base/source/$1/" | grep -v 'diff\|rc\|tar' | sort --reverse --version-sort -u | head -n 1
24}
25
26get_latest_lib_version() {
27 curl -s "$wine_url_base/$1/" | grep -o 'href="[0-9.]*/"' | sed 's_^href="\(.*\)/"_\1_' | sort --reverse --version-sort -u | head -n 1
28}
29
30to_sri() {
31 nix --extra-experimental-features nix-command hash to-sri --type sha256 "$1"
32}
33
34autobump() {
35 attr="$1"
36 latest="$2"
37 fetcher="${3:-nix-prefetch-url}"
38 more="${4:-}"
39 version=$(get_source_attr "$attr.version")
40 if [[ "$version" != "$latest" ]]; then
41 url=$(get_source_attr "$attr.url")
42 set_version_and_hash "$attr" "$latest" "$($fetcher "${url//$version/$latest}")"
43 [[ -z "$more" ]] || $more "$version" "$latest"
44 fi
45}
46
47do_update() {
48 [[ "${#sed_exprs[@]}" -eq 0 ]] || sed -i "${sed_exprs[@]}" "$sources_file"
49}