name: Build Release

on:
  workflow_dispatch:
  pull_request: 
  push:
    branches:
      - main
      - refactor-structure
    tags:
      - '**'

env:
  packageName: "nadena.dev.modular-avatar"

jobs:
  build:
    runs-on: ubuntu-latest
    steps:

      - name: Checkout
        uses: actions/checkout@v4
        
      - name: Checkout logo assets
        uses: actions/checkout@v4
        if: startsWith(github.ref, 'refs/tags/')
        with:
          repository: bdunderscore/modular-avatar-images
          path: .github/image-assets
      - name: Inject logo assets
        if: startsWith(github.ref, 'refs/tags/')
        run: |
          cp -f .github/image-assets/img/logo/ma_logo.png Editor/Images/logo.png
          cp -f .github/image-assets/img/logo/ma_icon.png Runtime/Icons/Icon_MA_Script.png

      - name: Check semver syntax
        id: semver-check
        if: startsWith(github.ref, 'refs/tags/')
        env:
          REF_NAME: ${{ github.ref }}
        run: |
          if echo $REF_NAME | grep '[a-z]-[0-9]' && ! echo $REF_NAME | grep '^refs/tags/1\.5\.0-'; then
            echo "Tag name does not follow semver prerelease syntax: $REF_NAME"
            exit 1
          fi

      - name: get version
        id: version
        uses: notiz-dev/github-action-json-property@a5a9c668b16513c737c3e1f8956772c99c73f6e8
        with:
          path: "package.json"
          prop_path: "version"
          
      - name: Check tag consistency
        if: startsWith(github.ref, 'refs/tags/')
        run: |
          if [ "${{ steps.version.outputs.prop }}" != "${GITHUB_REF##*/}" ]; then
            echo "Version in package.json does not match tag name: ${{ steps.version.outputs.prop }} != ${GITHUB_REF##*/}"
            exit 1
          fi

      - run: echo ${{steps.version.outputs.prop}}

      - name: Set Environment Variables
        run: |
          echo "zipFile=${{ env.packageName }}-${{ steps.version.outputs.prop }}".zip >> $GITHUB_ENV
          echo "zipFileSHA256=${{ env.packageName }}-${{ steps.version.outputs.prop }}".zip.sha256 >> $GITHUB_ENV
          echo "unityPackage=${{ env.packageName }}-${{ steps.version.outputs.prop }}.unitypackage" >> $GITHUB_ENV

      - name: Create Zip
        run: |
          zip ".github/${{env.zipFile}}" ./* -r -x .github .git '.git/*' '*~/*' '*.ps1*'
          mv ".github/${{env.zipFile}}" "${{env.zipFile}}"
          sha256sum "${{env.zipFile}}" > "${{env.zipFileSHA256}}"

      - uses: actions/upload-artifact@v4
        with:
          name: package-zip
          path: ${{ env.zipFile }}

      - name: Make Release
        uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191
        if: startsWith(github.ref, 'refs/tags/')
        with:
          draft: true
          generate_release_notes: true
          tag_name: ${{ steps.version.outputs.prop }}
          files: |
            ${{ env.zipFile }}
            ${{ env.zipFileSHA256 }}
            package.json