1
1
#! /usr/bin/env bash
2
2
3
3
set -eu
4
- shopt -s nullglob
4
+ shopt -s nullglob globstar
5
5
6
6
CODE_SIGNING_KEY_FINGERPRINT=" A1198702FC3E0A09A9AE5B75D5A1D4F266DE8DDF"
7
7
@@ -23,35 +23,42 @@ function rsync_upload {
23
23
24
24
while true ; do
25
25
sleep 10
26
- for checksums_path in * .sha256; do
26
+ for checksums_path in ** / * .sha256; do
27
27
sleep 1
28
28
29
+ checksums_dir=$( dirname " $checksums_path " )
30
+ checksums_filename=$( basename " $checksums_path " )
31
+
29
32
# Parse the platform name and version out of the filename of the checksums file.
30
- platform=" $( echo " $checksums_path " | cut -d + -f 1) "
31
- version=" $( echo " $checksums_path " | cut -d + -f 3,4 | sed ' s/\.sha256//' ) "
32
- if ! sha256sum --quiet -c " $checksums_path " ; then
33
+ platform=" $( echo " $checksums_filename " | cut -d + -f 1) "
34
+ version=" $( echo " $checksums_filename " | cut -d + -f 3,4 | sed ' s/\.sha256//' ) "
35
+ if ! (cd " $checksums_dir " && sha256sum --quiet -c " $checksums_filename " ) ; then
33
36
echo " Failed to verify checksums for $version "
34
37
continue
35
38
fi
36
39
37
- if [[ $version == * " -dev-" * ]]; then
40
+ if [[ " $platform " == " installer-downloader" ]]; then
41
+ upload_path=" desktop/installer-downloader"
42
+ elif [[ $version == * " -dev-" * ]]; then
38
43
upload_path=" $platform /builds"
39
44
else
40
45
upload_path=" $platform /releases"
41
46
fi
42
47
43
- files=$( awk ' {print $2}' < " $checksums_path " )
44
- for file in $files ; do
48
+ readarray -t files < <( cut -f 2- -d ' ' < " $checksums_path " | sed ' s/^\*\(.*\)/\1/' )
49
+ for filename in " ${files[@]} " ; do
50
+ file=" $checksums_dir /$filename "
51
+
45
52
file_upload_dir=" $upload_path /$version "
46
- if [[ $platform == " desktop" && ! $file == MullvadVPN-* ]]; then
53
+ if [[ $platform == " desktop" && ! $filename == MullvadVPN-* ]]; then
47
54
file_upload_dir=" $file_upload_dir /additional-files"
48
- elif [[ $platform == " android" && ! $file =~ MullvadVPN-" $version " (.apk| .play.apk| .play.aab) ]]; then
55
+ elif [[ $platform == " android" && ! $filename =~ MullvadVPN-" $version " (.apk| .play.apk| .play.aab) ]]; then
49
56
file_upload_dir=" $file_upload_dir /additional-files"
50
57
fi
51
58
52
59
rsync_upload " $file " " $file_upload_dir /" || continue
53
60
54
- if [[ $file == MullvadVPN-* ]]; then
61
+ if [[ $filename == MullvadVPN-* || $filename == Install * ]]; then
55
62
rm -f " $file .asc"
56
63
gpg -u $CODE_SIGNING_KEY_FINGERPRINT --pinentry-mode loopback --sign --armor --detach-sign " $file "
57
64
rsync_upload " $file .asc" " $file_upload_dir /" || continue
0 commit comments