name: Update Nightly

permissions:
  contents: write

on:
  push:
    branches:
      - master

jobs:
  update-nightly:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: Fetching tags
        run: git fetch --tags -f || true

      - name: Setup Node
        uses: actions/setup-node@v3.6.0
        with:
          node-version: 20.x

      - name: Get yarn cache directory path
        id: yarn-cache-dir-path
        run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT

      - uses: actions/cache@v3
        id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
        with:
          path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
          key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
          restore-keys: |
            ${{ runner.os }}-yarn-

      - name: Install Dependencies
        run: yarn

      - name: Update version to alpha
        run: yarn version --prerelease --preid=alpha --no-git --no-git-tag-version

      - name: Build NPM package
        run: yarn pack && mv baileys-*.tgz baileys-nightly.tgz

      - name: Generate Changelog
        id: generate_changelog
        run: |
          changelog=$(yarn run --silent changelog:preview)
          echo "changelog<<EOF" >> $GITHUB_OUTPUT
          echo "${changelog}" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT

      - name: Update Nightly TAG
        uses: richardsimko/update-tag@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: nightly

      - name: Update Nightly Release
        uses: meeDamian/github-release@2.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          tag: nightly
          commitish: ${{ github.sha }}
          name: Nightly Release
          body: ${{ steps.generate_changelog.outputs.changelog }}
          draft: false
          prerelease: true
          files: >
            baileys-nightly.tgz
          gzip: folders
          allow_override: true
