Skip to content

Commit

Permalink
Add a fallback to wget if curl is not available
Browse files Browse the repository at this point in the history
This allows using the install script on Alpine containers and other
busybox-based systems with no additional dependencies.

The script attempts to use `--https-only --secure-protocol=TLSv1_3
--no-verbose` if available, otherwise falls back to a portable wget call.

Additionally, error on invalid arguments.
  • Loading branch information
tgross35 committed Feb 20, 2024
1 parent 6d7df19 commit 76d7388
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions www/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,21 @@ need() {
fi
}

download() {
url="$1"
output="$2"

# use curl if available, wget otherwise
if command -v curl > /dev/null; then
curl --proto =https --tlsv1.2 -sSfL "$url" "-o$output"
else
# Some wget implementations support these flags, but busybox
# (used by alpine) does not. Try both sets.
wget --https-only --secure-protocol=TLSv1_e --no-verbose "$url" "-O$output" ||
wget "$url" "-O$output"
fi
}

force=false
while test $# -gt 0; do
case $1 in
Expand All @@ -74,12 +89,16 @@ while test $# -gt 0; do
shift
;;
*)
say "error: unrecognized argument '$1'. Usage:"
help
exit 1
;;
esac
shift
done

need curl
command -v curl > /dev/null || command -v wget > /dev/null ||
err "need wget or curl (command not found)"
need install
need mkdir
need mktemp
Expand All @@ -100,8 +119,7 @@ fi

if [ -z "${tag-}" ]; then
tag=$(
curl --proto =https --tlsv1.2 -sSf \
https://api.github.com/repos/casey/just/releases/latest |
download https://api.github.com/repos/casey/just/releases/latest - |
grep tag_name |
cut -d'"' -f4
)
Expand Down Expand Up @@ -145,10 +163,10 @@ say "Archive: $archive"
td=$(mktemp -d || mktemp -d -t tmp)

if [ "$extension" = "zip" ]; then
curl --proto =https --tlsv1.2 -sSfL "$archive" > "$td/just.zip"
download "$archive" "$td/just.zip"
unzip -d "$td" "$td/just.zip"
else
curl --proto =https --tlsv1.2 -sSfL "$archive" | tar -C "$td" -xz
download "$archive" - | tar -C "$td" -xz
fi

if [ -e "$dest/just" ] && [ "$force" = false ]; then
Expand Down

0 comments on commit 76d7388

Please sign in to comment.