diff --git a/.gitea/workflows/doxygen-to-wiki.yml b/.gitea/workflows/doxygen-to-wiki.yml index 0b9be8b..3bb6372 100644 --- a/.gitea/workflows/doxygen-to-wiki.yml +++ b/.gitea/workflows/doxygen-to-wiki.yml @@ -30,20 +30,45 @@ jobs: with: fetch-depth: 0 - - name: Install Doxygen, Graphviz, and doxybook2 + - name: Install Doxygen, Graphviz, jq, and doxybook2 shell: bash run: | set -euo pipefail sudo apt-get update - sudo apt-get install -y doxygen graphviz rsync curl ca-certificates unzip + sudo apt-get install -y doxygen graphviz rsync curl ca-certificates unzip jq + ARCH="$(uname -m)" case "${ARCH}" in - x86_64|amd64) DOXYBOOK2_ASSET="doxybook2-linux-amd64.zip" ;; - aarch64|arm64) DOXYBOOK2_ASSET="doxybook2-linux-arm64.zip" ;; + x86_64|amd64) ARCH_TAG="amd64" ;; + aarch64|arm64) ARCH_TAG="arm64" ;; *) echo "Unsupported architecture: ${ARCH}" >&2; exit 1 ;; esac - curl -fsSL -o /tmp/doxybook2.zip "https://github.com/matusnovak/doxybook2/releases/latest/download/${DOXYBOOK2_ASSET}" - sudo unzip -j /tmp/doxybook2.zip -d /usr/local/bin doxybook2 + + # Discover latest linux asset for our arch from GitHub API + API_URL="https://api.github.com/repos/matusnovak/doxybook2/releases/latest" + ASSET_URL="$(curl -fsSL "${API_URL}" \ + | jq -r --arg arch "${ARCH_TAG}" '.assets[] | select(.name | test("linux-" + $arch + "\\\\.(zip|tar\\\\.gz)$")) | .browser_download_url' \ + | head -n1)" + + # Fallback to known tar.gz naming if API parsing fails + if [ -z "${ASSET_URL}" ] || [ "${ASSET_URL}" = "null" ]; then + ASSET_URL="https://github.com/matusnovak/doxybook2/releases/latest/download/doxybook2-linux-${ARCH_TAG}.tar.gz" + fi + + TMP="/tmp/doxybook2-asset" + rm -f "${TMP}.zip" "${TMP}.tar.gz" || true + + if echo "${ASSET_URL}" | grep -qi '\.zip$'; then + curl -fsSL -o "${TMP}.zip" "${ASSET_URL}" + sudo unzip -j -o "${TMP}.zip" -d /usr/local/bin doxybook2 + elif echo "${ASSET_URL}" | grep -qi '\.tar\.gz$'; then + curl -fsSL -o "${TMP}.tar.gz" "${ASSET_URL}" + sudo tar -xzf "${TMP}.tar.gz" -C /usr/local/bin doxybook2 + else + echo "Unsupported asset type URL: ${ASSET_URL}" >&2 + exit 1 + fi + sudo chmod +x /usr/local/bin/doxybook2 doxybook2 --version