diff --git a/forgejo-release.sh b/forgejo-release.sh index 5ba1c6e..01001a2 100755 --- a/forgejo-release.sh +++ b/forgejo-release.sh @@ -26,11 +26,29 @@ TAG_URL=$(echo "$TAG" | sed 's/\//%2F/g') export GNUPGHOME +get_arch() { + local arch + arch="$(uname -m)" + + case "$arch" in + x86_64) arch="amd64" ;; + i386|i686) arch="i386" ;; + aarch64) arch="arm64" ;; + armv7l) arch="armhf" ;; # Debian uses armhf for hard-float 32-bit ARM + armv6l) arch="armel" ;; # older 32-bit ARM + riscv64) arch="riscv64" ;; + ppc64le) arch="ppc64el" ;; + s390x) arch="s390x" ;; + *) echo "Unknown architecture: $arch" >&2; return 1 ;; + esac + echo "$arch" +} + setup_tea() { - if which tea 2>/dev/null; then - TEA_BIN=$(which tea) + if command -v tea >/dev/null 2>&1; then + TEA_BIN=$(command -v tea) elif ! test -f $TEA_BIN; then - ARCH=$(dpkg --print-architecture) + ARCH=$(get_arch) curl -sL https://dl.gitea.io/tea/$TEA_VERSION/tea-$TEA_VERSION-linux-"$ARCH" >$TEA_BIN chmod +x $TEA_BIN fi @@ -166,9 +184,20 @@ upload() { } setup_api() { - if ! which jq curl; then - apt-get -qq update - apt-get install -y -qq jq curl + # Check if jq and curl are available + if command -v jq >/dev/null 2>&1 && command -v curl >/dev/null 2>&1; then + return 0 + fi + + echo "jq and/or curl missing, attempting to install..." >&2 + + if command -v apt-get >/dev/null 2>&1; then + apt-get -qq update && apt-get install -y -qq jq curl + elif command -v apk >/dev/null 2>&1; then + apk add --no-cache jq curl + else + echo "No supported package manager found. Please install jq and curl manually." >&2 + return 1 fi }