From 067e18fae244a32e01ce8bea15fc0f870a903d30 Mon Sep 17 00:00:00 2001 From: Jack Greiner Date: Tue, 7 Oct 2025 04:54:54 -0400 Subject: [PATCH] forgejo-release.sh: Improve support for different Linux bases Currently if you run this action and aren't using a Debian based runner you need to install all tools ahead of time or the Action fails. This should improve the behaviour so that it will attempt to install all dependencies on a best effort basis. --- forgejo-release.sh | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) 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 }