diff --git a/scripts/install.sh b/scripts/install.sh index e49a788..b3f8894 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -4,6 +4,8 @@ set -eu +LLAMA_SWAP_DEFAULT_ADDRESS=${LLAMA_SWAP_DEFAULT_ADDRESS:-"127.0.0.1:8080"} + red="$( (/usr/bin/tput bold || :; /usr/bin/tput setaf 1 || :) 2>&-)" plain="$( (/usr/bin/tput sgr0 || :) 2>&-)" @@ -11,16 +13,16 @@ status() { echo ">>> $*" >&2; } error() { echo "${red}ERROR:${plain} $*"; exit 1; } warning() { echo "${red}WARNING:${plain} $*"; } -available() { command -v $1 >/dev/null; } +available() { command -v "$1" >/dev/null; } require() { - local MISSING='' - for TOOL in $*; do - if ! available $TOOL; then - MISSING="$MISSING $TOOL" + _MISSING='' + for TOOL in "$@"; do + if ! available "$TOOL"; then + _MISSING="$_MISSING $TOOL" fi done - echo $MISSING + echo "$_MISSING" } SUDO= @@ -32,7 +34,7 @@ if [ "$(id -u)" -ne 0 ]; then SUDO="sudo" fi -NEEDS=$(require curl tee jq tar) +NEEDS=$(require tee tar python3 mktemp) if [ -n "$NEEDS" ]; then status "ERROR: The following tools are required but missing:" for NEED in $NEEDS; do @@ -62,18 +64,40 @@ esac download_binary() { ASSET_NAME="linux_$ARCH" - # Fetch the latest release info and extract the matching asset URL - DL_URL=$(curl -s "https://api.github.com/repos/mostlygeek/llama-swap/releases/latest" | \ - jq -r --arg name "$ASSET_NAME" \ - '.assets[] | select(.name | contains($name)) | .browser_download_url') + TMPDIR=$(mktemp -d) + trap 'rm -rf "${TMPDIR}"' EXIT INT TERM HUP + PYTHON_SCRIPT=$(cat <