# This workflow will build, run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages

name: MapIntegratedVuer Release
run-name: "Build and release ${{ github.event.inputs.release_type }}"

on:
  workflow_dispatch:
    inputs:
      release_type:
        type: choice
        description: What type of releases
        options:
        - Test-only
        - beta
        - patch
        - minor

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18.17.1
      - run: npm install
      - name: "Run Cypress"
        run: npm run cypress run-ct
        env:
          CYPRESS_ALGOLIA_ID: ${{ secrets.ALGOLIA_ID }}
          CYPRESS_ALGOLIA_KEY: ${{ secrets.ALGOLIA_KEY }}

  build:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 18.17.1
      - run: npm install
      - run: npm run build-bundle

  publish:
    needs: build
    if: github.event.inputs.release_type != 'Test-only'
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Get tags
        run: git fetch --tags origin
      - uses: actions/setup-node@v3
        with:
          registry-url: 'https://registry.npmjs.org'
          node-version: 18.17.1
      - name: "Release ${{ github.event.inputs.release_type }}"
        run: |
          git config user.name github-actions
          git config user.email github-actions@github.com
          npm install
          npm run release:${{ github.event.inputs.release_type }}
          git push
          git push --tag
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}