1
1
#! /bin/bash
2
- # requires: curl, sha256sum, awk
2
+ # requires: curl, sha256sum, awk, jq
3
3
set -e
4
4
5
5
BASE_PATH=" ${TUNASYNC_WORKING_DIR} "
6
6
7
7
# 参数为版本,比如8,11等
8
8
function downloadRelease() {
9
9
remote_filelist=" $BASE_PATH /$1 /filelist"
10
+ mkdir -p " $BASE_PATH /$1 "
10
11
echo -n " " > $remote_filelist
11
12
curl -s " https://api.adoptopenjdk.net/v2/latestAssets/releases/openjdk$1 " | \
12
13
jq -r ' .[]| [.version,.binary_type,.architecture,.os,.binary_name,.binary_link,.checksum_link,.installer_name,.installer_link,.installer_checksum_link]| @tsv' | \
@@ -20,12 +21,14 @@ function downloadRelease() {
20
21
echo " Skiping $binary_name "
21
22
downloaded=true
22
23
fi
23
- while [[ $downloaded != true ]]; do
24
+ local retry=0
25
+ while [[ $retry -lt 3 && $downloaded != true ]]; do
24
26
echo " Downloading ${dest_filename} "
25
27
link=" $binary_link "
26
28
download_and_check && {
27
- downloaded=true
29
+ downloaded=true
28
30
}
31
+ (( retry+= 1 ))
29
32
done
30
33
if [[ ! -z " $installer_name " ]]; then
31
34
dest_filename=" $BASE_PATH /$version /$binary_type /$architecture /$os /$installer_name "
@@ -36,13 +39,15 @@ function downloadRelease() {
36
39
echo " Skiping $installer_name "
37
40
downloaded=true
38
41
fi
39
- while [[ $downloaded != true ]]; do
42
+ retry=0
43
+ while [[ $retry -lt 3 && $downloaded != true ]]; do
40
44
echo " Downloading ${dest_filename} "
41
45
link=" $installer_link "
42
46
checksum_link=" $installer_checksum_link "
43
47
download_and_check && {
44
48
downloaded=true
45
49
}
50
+ (( retry+= 1 ))
46
51
done
47
52
fi
48
53
done
@@ -51,12 +56,13 @@ function downloadRelease() {
51
56
function clean_old_releases() {
52
57
declare version=$1
53
58
declare remote_filelist=" $BASE_PATH /$version /filelist"
54
- declare local_filelist=" /tmp/filelist.local"
55
- find " $BASE_PATH /$version " -type f > ${local_filelist}
56
- comm <( sort $remote_filelist ) <( sort $local_filelist ) -13 | while read file; do
57
- echo " deleting ${file} "
58
- rm " ${file} "
59
- done
59
+ declare local_filelist=" /tmp/filelist.local"
60
+ [[ ! -f " $remote_filelist " ]] && return 0
61
+ find " $BASE_PATH /$version " -type f > ${local_filelist}
62
+ comm <( sort $remote_filelist ) <( sort $local_filelist ) -13 | while read file; do
63
+ echo " deleting ${file} "
64
+ # rm "${file}"
65
+ done
60
66
}
61
67
62
68
function download_and_check() {
@@ -67,7 +73,11 @@ function download_and_check() {
67
73
" $link "
68
74
curl -s -S --fail -L ${CURL_OPTIONS:- } \
69
75
-o " ${dest_filename} .sha256.txt.tmp" \
70
- " $checksum_link "
76
+ " $checksum_link " || {
77
+ echo " Warning: ${dest_filename} .sha256.txt not exist, skipping SHA256 check"
78
+ mv " ${dest_filename} .tmp" " ${dest_filename} "
79
+ return 0
80
+ }
71
81
sha256sum_check && {
72
82
mv " ${dest_filename} .sha256.txt.tmp" " ${dest_filename} .sha256.txt"
73
83
mv " ${dest_filename} .tmp" " ${dest_filename} "
@@ -78,7 +88,7 @@ function download_and_check() {
78
88
function sha256sum_check() {
79
89
expected=$( cat " ${dest_filename} .sha256.txt.tmp" | awk ' {print $1}' )
80
90
actual=$( sha256sum " ${dest_filename} .tmp" | awk ' {print $1}' )
81
- if [ " $expected " = " $actual " ]; then
91
+ if [[ " $expected " = " $actual " ] ]; then
82
92
return 0
83
93
else
84
94
return 1
0 commit comments