on:
  push:
    branches:
      - main
  workflow_dispatch:
name: release-please
env:
  ACTION_NAME: release-please-action
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v3
      with:
        node-version: 20
    - name: install
      run: npm ci
    - name: build
      run: npm run build
    - name: commit
      run: |-
        set -e
        # get current commit hash
        CURRENT_HASH=$(git rev-parse HEAD)
        # get last commit hash of last build dist
        LAST_BUILD_HASH=$(git log --author=google-github-actions-bot -1 --pretty=format:"%H")
        DIFF=""
        # build and commit dist if diff
        git config --global user.name "actions-bot"
        git config user.email 'github-actions-bot@google.com'
        git add dist/
        git diff-index --quiet HEAD || git commit -m "chore: build dist ${ACTION_NAME}"
        # if last commit hash of last build dist was found, get logs of commits in btw for PR body
        if [ -z "$LAST_BUILD_HASH" ]
        then
              echo "Unable to find last commit by bot, skipping diff gen"
        else
              DIFF=$(git log ${LAST_BUILD_HASH}...${CURRENT_HASH} --oneline)
              echo $DIFF
        fi
        # set env vars
        echo "CURRENT_HASH=${CURRENT_HASH}" >> $GITHUB_ENV
        echo "LAST_BUILD_HASH=${LAST_BUILD_HASH}" >> $GITHUB_ENV
        echo 'DIFF<<EOF' >> $GITHUB_ENV
        echo "${DIFF}" >> $GITHUB_ENV
        echo 'EOF' >> $GITHUB_ENV
    - name: Create PR with dist
      uses: peter-evans/create-pull-request@v3
      with:
        token: ${{ secrets.ACTIONS_BOT_TOKEN }}
        commit-message: Build dist
        author: "actions-bot <github-actions-bot@google.com>"
        title: "chore: build dist"
        body: |
          Build dist PR
          ${{env.DIFF}}
        labels: automated pr
        branch: create-pull-request/build-dist
        delete-branch: true
        push-to-fork: google-github-actions-bot/${{env.ACTION_NAME}}
  release-please-release:
    runs-on: ubuntu-latest
    needs: [build]
    steps:
      - uses: google-github-actions/release-please-action@main
        id: release
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          release-type: node
          skip-github-pull-request: true
      - uses: actions/checkout@v2
      - name: tag major and patch versions
        run: |
          git config user.name github-actions[bot]
          git config user.email 41898282+github-actions[bot]@users.noreply.github.com
          git remote add gh-token "https://${{ secrets.GITHUB_TOKEN}}@github.com/google-github-actions/release-please-action.git"
          git tag -d v${{ steps.release.outputs.major }} || true
          git tag -d v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true
          git push origin :v${{ steps.release.outputs.major }} || true
          git push origin :v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} || true
          git tag -a v${{ steps.release.outputs.major }} -m "Release v${{ steps.release.outputs.major }}"
          git tag -a v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }} -m "Release v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}"
          git push origin v${{ steps.release.outputs.major }}
          git push origin v${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}
        if: ${{ steps.release.outputs.release_created }}
  release-please-pr:
    runs-on: ubuntu-latest
    needs:
      - build
      - release-please-release
    steps:
      - id: release-pr
        uses: google-github-actions/release-please-action@main
        with:
          token: ${{ secrets.ACTIONS_BOT_TOKEN }}
          release-type: node
          fork: true
          skip-github-release: true
