tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
wire-desktop: Add updateScript
toonn
10 months ago
cf36c820
d7b5e1a9
+106
-2
2 changed files
expand all
collapse all
unified
split
pkgs
by-name
wi
wire-desktop
package.nix
update.sh
+20
-2
pkgs/by-name/wi/wire-desktop/package.nix
···
71
71
hydraPlatforms = [ ];
72
72
};
73
73
74
74
+
passthru.updateScript = {
75
75
+
command = [
76
76
+
./update.sh
77
77
+
./.
78
78
+
];
79
79
+
supportedFeatures = [ "commit" ];
80
80
+
};
81
81
+
74
82
linux = stdenv.mkDerivation rec {
75
75
-
inherit pname version meta;
83
83
+
inherit
84
84
+
pname
85
85
+
version
86
86
+
meta
87
87
+
passthru
88
88
+
;
76
89
77
90
src = fetchurl {
78
91
url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb";
···
147
160
};
148
161
149
162
darwin = stdenv.mkDerivation {
150
150
-
inherit pname version meta;
163
163
+
inherit
164
164
+
pname
165
165
+
version
166
166
+
meta
167
167
+
passthru
168
168
+
;
151
169
152
170
src = fetchurl {
153
171
url = "https://github.com/wireapp/wire-desktop/releases/download/macos%2F${version}/Wire.pkg";
+86
pkgs/by-name/wi/wire-desktop/update.sh
···
1
1
+
#!/usr/bin/env nix-shell
2
2
+
#!nix-shell -i bash -p curl jq
3
3
+
4
4
+
set -e
5
5
+
6
6
+
cd $1
7
7
+
8
8
+
releases=$(curl -L \
9
9
+
-H "Accept: application/vnd.github+json" \
10
10
+
-H "X-GitHub-Api-Version: 2022-11-28" \
11
11
+
"https://api.github.com/repos/wireapp/wire-desktop/releases" \
12
12
+
)
13
13
+
14
14
+
latest=$(jq --argjson suffix '{ "linux": ".deb", "macos": ".pkg" }' \
15
15
+
--slurpfile versions versions.json '
16
16
+
def platform_latest(platform):
17
17
+
map(select(.tag_name | startswith(platform)))
18
18
+
| max_by(.tag_name)
19
19
+
| { version: .tag_name | ltrimstr(platform + "/")
20
20
+
, url: .assets.[]
21
21
+
| .browser_download_url
22
22
+
| select(endswith($suffix.[platform]))
23
23
+
};
24
24
+
25
25
+
. as $releases
26
26
+
| $versions.[] as $old
27
27
+
| $old
28
28
+
| with_entries( .key as $key
29
29
+
| { key: $key, value: $releases | platform_latest($key) }
30
30
+
| select(.value.version != $old.[$key].version)
31
31
+
)
32
32
+
' <<< "$releases"
33
33
+
)
34
34
+
35
35
+
urlHashes=$(
36
36
+
printf '{ '
37
37
+
function entries () {
38
38
+
local sep=''
39
39
+
for url in $(jq --raw-output '.[].url' <<< "$latest"); do
40
40
+
printf '%s"%s": "%s"\n' "$sep" "$url" \
41
41
+
"$(nix-hash --to-sri --type sha256 $(nix-prefetch-url $url))"
42
42
+
sep=', '
43
43
+
done
44
44
+
}
45
45
+
entries
46
46
+
printf '}'
47
47
+
)
48
48
+
49
49
+
commit=$(jq --arg versionJSON "$(printf '%s/versions.json' "$1")" \
50
50
+
--slurpfile versions versions.json '
51
51
+
$versions.[] as $old
52
52
+
| to_entries
53
53
+
| map("\(.key) \($old.[.key].version) -> \(.value.version)")
54
54
+
| join(", ")
55
55
+
| [ if . == ""
56
56
+
then empty
57
57
+
else { attrPath: "wire-desktop"
58
58
+
, oldVersion: "A"
59
59
+
, newVersion: "B"
60
60
+
, files: [ $versionJSON ]
61
61
+
, commitMessage: "wire-desktop: \(.)"
62
62
+
}
63
63
+
end
64
64
+
]
65
65
+
' <<< "$latest"
66
66
+
)
67
67
+
68
68
+
tempfile=$(mktemp)
69
69
+
70
70
+
updated=$(jq --argjson hashes "$urlHashes" --slurpfile versions versions.json '
71
71
+
$versions.[] as $old
72
72
+
| $old + map_values(with_entries(if .key == "url"
73
73
+
then { key: "hash"
74
74
+
, value: $hashes.[.value]
75
75
+
}
76
76
+
else .
77
77
+
end
78
78
+
)
79
79
+
)
80
80
+
' <<< "$latest" > $tempfile
81
81
+
)
82
82
+
83
83
+
mv $tempfile versions.json
84
84
+
85
85
+
printf '%s' "$commit"
86
86
+
exit 0