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 8477f81 commit 6be3097
Showing 1 changed file with 29 additions and 5 deletions.
34 changes: 29 additions & 5 deletions www/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,27 @@ 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. Also busybox help uses stderr
# while gnu uses stdout...
shift "$#" # clear function arguments to use as an array
wget --help 2>&1 | grep -q https-only && set -- "$@" "--https-only"
wget --help 2>&1 | grep -q secure-protocol &&
set -- "$@" "--secure-protocol=TLSv1_3"
wget --help 2>&1 | grep -q no-verbose && quiet="--no-verbose"
set -- "$@" "${quiet:---quiet}"
wget "$@" "$url" "-O$output"
fi
}

force=false
while test $# -gt 0; do
case $1 in
Expand All @@ -74,12 +95,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 +125,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 +169,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 6be3097

Please sign in to comment.