name: fleetbase-js

on:
    push:
        branches: [master]
        tags:
            - 'v*'
    pull_request:
        branches: [master]

jobs:
    build:
        runs-on: ubuntu-latest

        strategy:
            matrix:
                node-version: [18.x] # Build on Node.js 16

        steps:
            - uses: actions/checkout@v4

            - name: Setup Node.js ${{ matrix.node-version }}
              uses: actions/setup-node@v3
              with:
                  node-version: ${{ matrix.node-version }}
            - uses: actions/cache@v3
              id: npm-cache
              with:
                  path: ~/.pnpm-store # Replace this with the path you want to cache
                  key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
                  restore-keys: |
                      ${{ runner.os }}-node-
            - name: Setup pnpm
              uses: pnpm/action-setup@v2.0.1
              with:
                  version: latest

            - name: Install Dependencies
              run: pnpm install

            - name: Test
              run: pnpm test
              env:
                  FLEETBASE_KEY: ${{ secrets.FLEETBASE_KEY }}
                  FLEETBASE_HOST: ${{ secrets.FLEETBASE_HOST }}

            - name: Build
              run: pnpm run bundle

    npm_publish:
        needs: build
        runs-on: ubuntu-latest
        if: startsWith(github.ref, 'refs/tags/')
        steps:
            - uses: actions/checkout@v4

            - name: Setup Node.js 18.x
              uses: actions/setup-node@v4
              with:
                  node-version: 18.x

            - name: Setup pnpm
              uses: pnpm/action-setup@v2.0.1
              with:
                  version: latest

            - name: Install Dependencies
              run: pnpm install

            - name: Build
              run: pnpm run bundle

            - name: Set up npm
              run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_AUTH_TOKEN }}" > ~/.npmrc

            - name: Publish
              run: npm publish --access public

    github_publish:
        needs: build
        runs-on: ubuntu-latest
        if: startsWith(github.ref, 'refs/tags/')
        steps:
            - uses: actions/checkout@v4

            - name: Setup Node.js 18.x
              uses: actions/setup-node@v4
              with:
                  node-version: 18.x

            - name: Setup pnpm
              uses: pnpm/action-setup@v2.0.1
              with:
                  version: latest

            - name: Install Dependencies
              run: pnpm install

            - name: Build
              run: pnpm run bundle

            - name: Configure npm for GitHub registry
              run: |
                  echo "@fleetbase:registry=https://npm.pkg.github.com/" >> ~/.npmrc
                  echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc

            - name: Publish to GitHub registry
              run: npm publish
