name: Release

on:
  push:
    branches:
      - main
      - release/v*

jobs:
  release:
    runs-on: ubuntu-latest
    
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Set up Git identity
        run: |
          git config --global user.email "shivaram.k@enlume.com"
          git config --global user.name "shivaramkota"
      - name: Install dependencies
        run: npm install

      # - name: Build project
      #   run: npm run build

      - name: Get latest tag
        id: latest_tag
        run: echo "::set-output name=TAG::$(git describe --tags --abbrev=0 || echo "")"

      - name: Check if latest tag exists
        id: check_tag
        run: echo "::set-output name=TAG_EXISTS::$(test -n '${{ steps.latest_tag.outputs.TAG }}')"

      - name: Create version tag
        if: steps.check_tag.outputs.TAG_EXISTS == 'true'
        id: create_tag
        run: |
          latest_tag=${{ steps.latest_tag.outputs.TAG }}
          latest_commit=$(git rev-list -n 1 $latest_tag)
          commit_count=$(git rev-list --count $latest_commit..HEAD)
          new_tag="v1.0.$commit_count"
          git tag $new_tag -m "Release $new_tag"
          echo "::set-output name=NEW_TAG::$new_tag"
      - name: Push tag to repository
        if: steps.check_tag.outputs.TAG_EXISTS == 'true'
        run: git push origin ${{ steps.create_tag.outputs.NEW_TAG }}
     
      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: v1.2.0  # Modify this line to use a valid tag name
          release_name: Release v1.2.0  # Modify this line to use a valid tag name
          body: |
            This is an automatically created release for tag v1.1.0.
            ## Changes
            - Minor bug fixes
          draft: false
          prerelease: false
