name: Reusable Release

on:
  workflow_call:
    inputs:
      ffversion:
        required: true
        type: string

permissions:
  contents: write

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - name: get latest release version
        id: get_version_release
        uses: pozetroninc/github-action-get-latest-release@2a61c339ea7ef0a336d1daa35ef0cb1418e7676c # v0.8.0
        with:
          repository: ${{ github.repository }}

      - name: download artifacts
        if: inputs.ffversion != steps.get_version_release.outputs.release
        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1

      - name: create release
        if: inputs.ffversion != steps.get_version_release.outputs.release
        uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0
        with:
          tag: ${{ inputs.ffversion }}
          commit: ${{ github.sha }}
          artifactErrorsFailBuild: true
          artifacts: fastfetch-*/fastfetch-*
          body: "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ inputs.ffversion }}/CHANGELOG.md) for details."

      - name: download source tarballs
        if: inputs.ffversion != steps.get_version_release.outputs.release
        run: |
          for i in 1 2 3 4 5; do curl -L --remote-name-all --output-dir fastfetch-source --create-dirs https://github.com/${{ github.repository }}/archive/refs/tags/${{ inputs.ffversion }}.{tar.gz,zip} && break || sleep 5; done
          ls fastfetch-*/*

      - name: generate release notes
        if: inputs.ffversion != steps.get_version_release.outputs.release
        run: |
          echo "Please refer to [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/${{ inputs.ffversion }}/CHANGELOG.md) for details." > fastfetch-release-notes.md
          echo -e "\n---\n\n<details><summary>SHA256SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md
          sha256sum fastfetch-*/* >> fastfetch-release-notes.md
          echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md
          echo -e "\n<details><summary>SHA512SUMs</summary><br>\n\n\`\`\`" >> fastfetch-release-notes.md
          sha512sum fastfetch-*/* >> fastfetch-release-notes.md
          echo -e "\`\`\`\n</details>" >> fastfetch-release-notes.md

      - name: update release body
        if: inputs.ffversion != steps.get_version_release.outputs.release
        uses: ncipollo/release-action@339a81892b84b4eeb0f6e744e4574d79d0d9b8dd # v1.21.0
        with:
          tag: ${{ inputs.ffversion }}
          commit: ${{ github.sha }}
          bodyFile: fastfetch-release-notes.md
          allowUpdates: true
