name: Create release

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

jobs:
  create-release:
    runs-on: ubuntu-latest
    steps:
      - name: Get latest code
        uses: actions/checkout@v4
        with:
          fetch-depth: 0
          ref: ${{ github.event.repository.default_branch }}

      - name: Setup Bun
        uses: oven-sh/setup-bun@v2
        with:
          bun-version: latest


      - name: Install package dependencies
        run: bun install
        working-directory: package

      - name: Install web dependencies
        run: bun install
        working-directory: web

      - name: Run web build script
        run: bun run build
        working-directory: web


      - name: Bump package version
        run: bun .github/actions/bump-package-version.js
        env:
          TGT_RELEASE_VERSION: ${{ github.ref_name }}

      - name: Bump manifest version
        run: bun .github/actions/bump-manifest-version.js
        env:
          TGT_RELEASE_VERSION: ${{ github.ref_name }}


      - name: Push version bump change
        uses: EndBug/add-and-commit@v9
        with:
          add: '["fxmanifest.lua", "package/package.json"]'
          push: true
          default_author: github_actions
          message: 'chore: bump version to ${{ github.ref_name }}'

      - name: Update tag
        uses: EndBug/latest-tag@v1
        with:
          ref: ${{ github.ref_name }}


      - name: Publish package to npm registry
        run: bun publish --access public
        working-directory: package
        env:
          NPM_CONFIG_TOKEN: ${{ secrets.NPM_TOKEN }}

      - name: Install zip
        run: sudo apt install zip

      - name: Bundle files
        run: |
          mkdir -p ./temp/ox_lib
          mkdir -p ./temp/ox_lib/web/
          cp ./{LICENSE,README.md,fxmanifest.lua,init.lua} ./temp/ox_lib
          cp -r ./{imports,resource,locales} ./temp/ox_lib
          cp -r ./web/build ./temp/ox_lib/web/
          cd ./temp && zip -r ../ox_lib.zip ./ox_lib

      - name: Create release
        uses: 'marvinpinto/action-automatic-releases@v1.2.1'
        id: auto_release
        with:
          repo_token: ${{ secrets.GITHUB_TOKEN }}
          prerelease: false
          files: ox_lib.zip
        env:
          CI: false
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
