|
4 | 4 | set -euo pipefail |
5 | 5 |
|
6 | 6 | install_dir="${1:?usage: install-rclone.sh INSTALL_DIR}" |
7 | | -archive="rclone-current-linux-amd64.zip" |
| 7 | +case "$(uname -m)" in |
| 8 | + x86_64|amd64) architecture="amd64" ;; |
| 9 | + aarch64|arm64) architecture="arm64" ;; |
| 10 | + *) |
| 11 | + echo "Unsupported architecture: $(uname -m)" >&2 |
| 12 | + exit 1 |
| 13 | + ;; |
| 14 | +esac |
| 15 | +archive="rclone-current-linux-${architecture}.zip" |
8 | 16 | tmp_dir="$(mktemp -d)" |
9 | 17 | trap 'rm -rf "$tmp_dir"' EXIT |
10 | 18 |
|
11 | 19 | curl --fail --location --retry 5 --retry-all-errors \ |
12 | 20 | "https://downloads.rclone.org/${archive}" \ |
13 | 21 | --output "${tmp_dir}/${archive}" |
14 | 22 | unzip -q "${tmp_dir}/${archive}" -d "$tmp_dir" |
15 | | -rclone_path="$(find "$tmp_dir" -type f -path '*/rclone-*/rclone' -print -quit)" |
| 23 | +rclone_path="$(find "$tmp_dir" -type f -path '*/rclone-*-linux-*/rclone' -print -quit)" |
16 | 24 | version_dir="$(basename "$(dirname "$rclone_path")")" |
17 | 25 | version="${version_dir#rclone-}" |
18 | | -version="${version%-linux-amd64}" |
| 26 | +version="${version%-linux-${architecture}}" |
19 | 27 |
|
20 | 28 | curl --fail --location --retry 5 --retry-all-errors \ |
21 | 29 | "https://downloads.rclone.org/${version}/SHA256SUMS" \ |
22 | 30 | --output "${tmp_dir}/SHA256SUMS" |
23 | | -versioned_archive="${version}-linux-amd64.zip" |
| 31 | +versioned_archive="${version_dir}.zip" |
24 | 32 | expected="$(awk -v file="$versioned_archive" '$2 == file { print $1 }' "${tmp_dir}/SHA256SUMS")" |
25 | 33 | actual="$(sha256sum "${tmp_dir}/${archive}" | cut -d " " -f 1)" |
26 | | -test -n "$expected" |
27 | | -test "$actual" = "$expected" |
| 34 | +if [[ -z "$expected" ]]; then |
| 35 | + echo "Checksum for ${versioned_archive} was not found in rclone SHA256SUMS" >&2 |
| 36 | + exit 1 |
| 37 | +fi |
| 38 | +if [[ "$actual" != "$expected" ]]; then |
| 39 | + echo "Checksum mismatch for ${archive}: expected ${expected}, got ${actual}" >&2 |
| 40 | + exit 1 |
| 41 | +fi |
28 | 42 |
|
29 | 43 | mkdir -p "$install_dir" |
30 | 44 | cp "$rclone_path" "${install_dir}/rclone" |
|
0 commit comments