name: Publish aux Release on: push: branches: - 'master' workflow_dispatch: permissions: contents: write jobs: release: if: ${{ github.event_name == 'workflow_dispatch' || startsWith(github.event.head_commit.message, 'release v') }} runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 - name: Resolve addon version id: version shell: bash run: | VERSION=$(sed -n 's/^## Version: //p' aux-addon.toc | head -n 1) if [ -z "$VERSION" ]; then echo "Missing ## Version in aux-addon.toc" >&2 exit 1 fi echo "version=$VERSION" >> "$GITHUB_OUTPUT" echo "tag=v$VERSION" >> "$GITHUB_OUTPUT" - name: Point release tag at current master env: GH_TOKEN: ${{ github.token }} TAG: ${{ steps.version.outputs.tag }} shell: bash run: | if gh api "repos/${GITHUB_REPOSITORY}/git/ref/tags/${TAG}" >/dev/null 2>&1; then gh api -X PATCH "repos/${GITHUB_REPOSITORY}/git/refs/tags/${TAG}" \ -f sha="$GITHUB_SHA" -F force=true >/dev/null else gh api -X POST "repos/${GITHUB_REPOSITORY}/git/refs" \ -f ref="refs/tags/${TAG}" -f sha="$GITHUB_SHA" >/dev/null fi - name: Update existing GitHub release target env: GH_TOKEN: ${{ github.token }} TAG: ${{ steps.version.outputs.tag }} shell: bash run: | RELEASE_ID=$(gh api "repos/${GITHUB_REPOSITORY}/releases/tags/${TAG}" --jq '.id' 2>/dev/null || true) if [ -n "$RELEASE_ID" ]; then gh api -X PATCH "repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}" \ -f target_commitish="$GITHUB_SHA" \ -f name="aux ClassicAPI ${TAG}" \ -F make_latest=true >/dev/null else gh api -X POST "repos/${GITHUB_REPOSITORY}/releases" \ -f tag_name="$TAG" \ -f target_commitish="$GITHUB_SHA" \ -f name="aux ClassicAPI ${TAG}" \ -F draft=false \ -F prerelease=false \ -F make_latest=true >/dev/null fi