# test
name: version, tag and github release

on:
  push:
    branches: [main]

jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - name: Check if version already exists
        id: version-check
        run: |
          package_version=$(node -p "require('./package.json').version")
          exists=$(gh api repos/${{ github.repository }}/releases/tags/v$package_version >/dev/null 2>&1 && echo "true" || echo "")

          if [ -n "$exists" ];
          then
            echo "Version v$package_version already exists"
            echo "::warning file=package.json,line=1::Version v$package_version already exists - no release will be created. If you want to create a new release, please update the version in package.json and push again."
            echo "skipped=true" >> $GITHUB_OUTPUT
          else
            echo "Version v$package_version does not exist. Creating release..."
            echo "skipped=false" >> $GITHUB_OUTPUT
            echo "tag=v$package_version" >> $GITHUB_OUTPUT
          fi
        env:
          GH_TOKEN: ${{ secrets.GH_TOKEN }}
      - name: Setup git
        if: ${{ steps.version-check.outputs.skipped == 'false' }}
        run: |
          git config --global user.email ${{ secrets.GH_EMAIL }}
          git config --global user.name ${{ secrets.GH_USERNAME }}
      - name: Generate oclif README
        if: ${{ steps.version-check.outputs.skipped == 'false' }}
        id: oclif-readme
        run: |
          yarn
          yarn oclif readme
          if [ -n "$(git status --porcelain)" ]; then
            git add .
            git commit -am "chore: update README.md"
            git push -u origin ${{ github.ref_name }}
          fi
      - name: Create Github Release
        uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5
        if: ${{ steps.version-check.outputs.skipped == 'false' }}
        with:
          name: ${{ steps.version-check.outputs.tag }}
          tag: ${{ steps.version-check.outputs.tag }}
          commit: ${{ github.ref_name }}
          token: ${{ secrets.GH_TOKEN }}
          skipIfReleaseExists: true