---
# This action is a candidate to centrally manage in https://github.com/<organization>/.github/
# If more Homebrew applications are developed, consider moving this action to the organization's .github repository,
# using the `homebrew-pkg` repository label to identify repositories that should trigger have this workflow.

# Update Homebrew on release events.

name: Update Homebrew release

on:
  release:
    types: [created, edited]

concurrency:
  group: "${{ github.workflow }}-${{ github.event.release.tag_name }}"
  cancel-in-progress: true

jobs:
  update-homebrew-release:
    if: >-
      github.repository_owner == 'LizardByte' &&
      !github.event.release.draft && !github.event.release.prerelease
    runs-on: ubuntu-latest
    steps:
      - name: Check if Homebrew repo
        env:
          TOPIC: homebrew-pkg
        id: check
        uses: actions/github-script@v7
        with:
          script: |
            const topic = process.env.TOPIC;
            console.log(`Checking if repo has topic: ${topic}`);

            const repoTopics = await github.rest.repos.getAllTopics({
              owner: context.repo.owner,
              repo: context.repo.repo
            });
            console.log(`Repo topics: ${repoTopics.data.names}`);

            const hasTopic = repoTopics.data.names.includes(topic);
            console.log(`Has topic: ${hasTopic}`);

            core.setOutput('hasTopic', hasTopic);

      - name: Download release asset
        id: download
        if: >-
          steps.check.outputs.hasTopic == 'true'
        uses: robinraju/release-downloader@v1.10
        with:
          repository: "${{ github.repository }}"
          tag: "${{ github.event.release.tag_name }}"
          fileName: "*.rb"
          tarBall: false
          zipBall: false
          out-file-path: "release_downloads"
          extract: false

      - name: Publish Homebrew Formula
        if: >-
          steps.check.outputs.hasTopic == 'true' &&
          fromJson(steps.download.outputs.downloaded_files)[0]
        uses: LizardByte/homebrew-release-action@v2024.612.21058
        with:
          formula_file: ${{ fromJson(steps.download.outputs.downloaded_files)[0] }}
          git_email: ${{ secrets.GH_BOT_EMAIL }}
          git_username: ${{ secrets.GH_BOT_NAME }}
          publish: true
          token: ${{ secrets.GH_BOT_TOKEN }}
          validate: false
