name: CI/CD Pipeline

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  test:
    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: "18"

      - name: Install dependencies
        run: |
          yarn install

      - name: Run tests
        run: |
          yarn test

  deploy:
    runs-on: ubuntu-latest
    needs: test

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: "18"
          registry-url: https://registry.npmjs.org/

      - name: Install dependencies
        run: |
          yarn install

      - name: Remove dist folder
        run: |
          rm -rf dist

      - name: Generate dist folder
        run: |
          yarn rollup

      - name: Publish to npm
        run: |
          npm publish --access=public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
