name: Release Creation

on:
  release:
    types: [published]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - run: echo "💡 The ${{ gitea.repository }} repository will be cloned to the runner."

      - uses: RouxAntoine/checkout@v3.5.4

      # get part of the tag after the `v`
      - name: Extract tag version number
        id: get_version
        uses: battila7/get-version-action@v2

      # Substitute the Manifest and Download URLs in the module.json
      - name: Substitute Manifest and Download Links For Versioned Ones
        id: sub_manifest_link_version
        uses: microsoft/variable-substitution@v1
        with:
          files: "module.json"
        env:
          version: ${{steps.get_version.outputs.version-without-v}}
          url: https://www.uberwald.me/gitea/${{gitea.repository}}
          manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/module.json
          download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{gitea.event.release.tag_name}}/module.zip

      # Set up Node.js
      - name: Setup Node.js
        uses: https://github.com/actions/setup-node@v4
        with:
          node-version: "20"

      - name: Install dependencies
        run: npm ci

      - name: Build
        run: npm run build

      # Create a zip file with all files required by the module to add to the release
      - run: |
          apt update -y
          apt install -y zip

      - run: node scripts/package.mjs

      - name: Upload release assets
        run: |
          # Upload module.zip
          curl -s -X POST \
            -H "Content-Type: application/octet-stream" \
            -H "Authorization: token ${{secrets.RELEASE_SCRYING_POOL}}" \
            --data-binary @./module.zip \
            "https://www.uberwald.me/api/v1/repos/${{gitea.repository}}/releases/${{gitea.event.release.id}}/assets?name=module.zip"

          # Upload module.json
          curl -s -X POST \
            -H "Content-Type: application/json" \
            -H "Authorization: token ${{secrets.RELEASE_SCRYING_POOL}}" \
            --data-binary @./module.json \
            "https://www.uberwald.me/api/v1/repos/${{gitea.repository}}/releases/${{gitea.event.release.id}}/assets?name=module.json"

      - name: Publish to Foundry server
        uses: https://github.com/djlechuck/foundryvtt-publish-package-action@v1
        with:
          token: ${{ secrets.FOUNDRYVTT_RELEASE_TOKEN }}
          id: "scrying-pool"
          version: ${{gitea.event.release.tag_name}}
          manifest: "https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/module.json"
          notes: "https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{gitea.event.release.tag_name}}/module.zip"
          compatibility-minimum: "14"
          compatibility-verified: "14"
