|
1 | 1 | #!/bin/bash
|
2 | 2 |
|
3 |
| -set -e |
| 3 | +set -eo pipefail |
4 | 4 |
|
5 | 5 | exec 3>&1 # make stdout available as fd 3 for the result
|
6 | 6 | exec 1>&2 # redirect all output to stderr for logging
|
7 | 7 |
|
8 | 8 | destination=$1
|
9 | 9 |
|
10 |
| -payload=$(mktemp "$TMPDIR/resource-check.XXXXXX") |
11 |
| -cat > "$payload" <&0 |
| 10 | +payload=$(mktemp "${TMPDIR}/resource-check.XXXXXX") |
| 11 | +cat > "${payload}" <&0 |
12 | 12 |
|
13 |
| -version=$(jq -r '.version.version // empty' < "$payload") |
14 |
| -if [[ "${version}X" == "X" ]]; then |
15 |
| - >&2 echo "Version info 'version' is missing" |
16 |
| - exit 1 |
| 13 | +version=$(jq -r '.version.version // empty' < "${payload}") |
| 14 | +if [[ -z ${version} ]]; then |
| 15 | + >&2 echo "Version info 'version' is missing" |
| 16 | + exit 1 |
17 | 17 | fi
|
18 | 18 |
|
19 |
| -source_project=$(jq -r '.source.project // empty' < "$payload") |
20 |
| -if [[ "${source_project}X" == "X" ]]; then |
21 |
| - >&2 echo "Source parameter 'project' is missing" |
22 |
| - exit 1 |
| 19 | +source_project=$(jq -r '.source.project // empty' < "${payload}") |
| 20 | +if [[ -z ${source_project} ]]; then |
| 21 | + >&2 echo "Source parameter 'project' is missing" |
| 22 | + exit 1 |
23 | 23 | fi
|
24 | 24 |
|
25 |
| -params_regexp=$(jq -r '.params.regexp // empty' < "$payload") |
| 25 | +params_regexp=$(jq -r '.params.regexp // empty' < "${payload}") |
26 | 26 |
|
27 |
| -curl -sf "https://releases.hashicorp.com/${source_project}/index.json" > /dev/null || ( |
28 |
| - >&2 echo "Unknown hashicorp project '$source_project'" |
29 |
| - exit 1 |
| 27 | +curl --silent --fail --show-error --location --output /dev/null \ |
| 28 | + --url "https://releases.hashicorp.com/${source_project}/index.json" || ( |
| 29 | + >&2 echo "Unknown hashicorp project '${source_project}'" |
| 30 | + exit 1 |
30 | 31 | )
|
31 | 32 |
|
32 | 33 | >&2 echo "Fetching assets ${source_project} v${version}"
|
33 |
| -cd "$destination" |
34 |
| -echo "$version" > version |
35 |
| -echo "$source_project" > project |
36 |
| - |
37 |
| -build_urls=$(curl -s "https://releases.hashicorp.com/${source_project}/index.json" | jq -r ".versions[\"${version}\"].builds[].url") |
38 |
| -if [[ ! -z $params_regexp ]]; then |
39 |
| - set +e |
40 |
| - build_urls=$(echo "${build_urls}" | grep "${params_regexp}") |
41 |
| - set -e |
| 34 | +cd "${destination}" |
| 35 | +echo "${version}" > version |
| 36 | +echo "${source_project}" > project |
| 37 | + |
| 38 | +build_urls=$( |
| 39 | + curl --silent --fail --show-error --location \ |
| 40 | + --url "https://releases.hashicorp.com/${source_project}/index.json" \ |
| 41 | + | jq -r ".versions[\"${version}\"].builds[].url" |
| 42 | +) |
| 43 | +if [[ -n "${params_regexp}" ]]; then |
| 44 | + set +e |
| 45 | + build_urls=$(grep "${params_regexp}" <<< "${build_urls}") |
| 46 | + set -e |
42 | 47 | fi
|
43 |
| -if [[ ! -z $build_urls ]]; then |
44 |
| - for url in $build_urls; do |
45 |
| - >&2 echo "Downloading $url" |
46 |
| - curl -O "$url" |
47 |
| - done |
48 |
| -else |
49 |
| - >&2 echo "regexp '$params_regexp' did not match any build URLs" |
50 |
| - exit 1 |
| 48 | +if [[ -z "${build_urls}" ]]; then |
| 49 | + >&2 echo "Regexp '${params_regexp}' did not match any build URLs" |
| 50 | + exit 1 |
51 | 51 | fi
|
| 52 | +for url in ${build_urls}; do |
| 53 | + >&2 echo "Downloading ${url}" |
| 54 | + curl --silent --fail --show-error --location --remote-name \ |
| 55 | + --url "${url}" |
| 56 | +done |
52 | 57 |
|
53 |
| -jq -n --arg version "${version}" '{version: { version: $version }}' >&3 |
| 58 | +jq --null-input --arg version "${version}" '{ version: { version: $version } }' >&3 |
0 commit comments