From a91ae74f37567799d635cb980458236169e7b62d Mon Sep 17 00:00:00 2001 From: Jack Greiner Date: Tue, 30 Sep 2025 18:09:37 -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 | 47 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/forgejo-release.sh b/forgejo-release.sh index 5ba1c6e..e01c0b6 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,26 @@ 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 dnf >/dev/null 2>&1; then + dnf -y install jq curl + elif command -v yum >/dev/null 2>&1; then + yum -y install jq curl + elif command -v apk >/dev/null 2>&1; then + apk add --no-cache jq curl + elif command -v zypper >/dev/null 2>&1; then + zypper --non-interactive install jq curl + else + echo "No supported package manager found. Please install jq and curl manually." >&2 + return 1 fi }