name: Generate SBOM

on:
  push:
    tags:
      - 'v*'
  workflow_dispatch:

jobs:
  generate-sbom:
    permissions:
      contents: write
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: https://git.quad4.io/actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
        with:
          fetch-depth: 0

      - name: Setup Go
        uses: https://git.quad4.io/actions/setup-go@40f1582b2485089dde7abd97c1529aa768e1baff # v5
        with:
          go-version: '1.25.5'

      - name: Setup Task
        uses: https://git.quad4.io/actions/setup-task@0ab1b2a65bc55236a3bc64cde78f80e20e8885c2 # v1
        with:
          version: '3.46.3'

      - name: Install dependencies
        run: task deps

      - name: Install Trivy
        run: task trivy:install

      - name: Generate SBOM
        run: task sbom

      - name: Commit and Push Changes
        run: |
          git config --global user.name "Gitea Action"
          git config --global user.email "actions@noreply.quad4.io"
          git remote set-url origin https://${{ secrets.GITEA_TOKEN }}@git.quad4.io/${{ github.repository }}.git
          git fetch origin main || git fetch origin master
          git checkout main || git checkout master
          git add sbom/
          if ! git diff --quiet || ! git diff --staged --quiet; then
            git commit -m "Auto-update SBOM [skip ci]"
            git push origin main || git push origin master
          fi
        env:
          GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}

