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.
This commit is contained in:
Jack Greiner 2025-10-07 04:54:54 -04:00
parent e5e095057a
commit 067e18fae2
No known key found for this signature in database
GPG key ID: F34343A8F6B33E1E

View file

@ -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
}