name: ci

on: push

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # Cache packages when the branch is not update-dependencies or dependabot/*
      - name: Resolve caching
        id: cache
        if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'renovate/') }}
        run: echo "package=yarn" >> $GITHUB_OUTPUT

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: ${{ steps.cache.outputs.package }}
          node-version-file: '.nvmrc'

      - name: Set yarn auth
        run: ./scripts/set-yarn-auth.sh
        env:
          NPM_TOKEN: ${{secrets.NPM_TOKEN}}

      - run: yarn install --immutable

      - run: yarn lint

      - run: yarn test

      - run: yarn build

      - run: yarn build-storybook

  publish:
    needs: test
    if: contains(github.ref, 'refs/tags/v')
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      # Cache packages when the branch is not update-dependencies or dependabot/*
      - name: Resolve caching
        id: cache
        if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'renovate/') }}
        run: echo "package=yarn" >> $GITHUB_OUTPUT

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          cache: ${{ steps.cache.outputs.package }}
          node-version-file: '.nvmrc'
          always-auth: true
          registry-url: 'https://registry.npmjs.org'
          scope: '@moonwalker'
        env:
          NPM_TOKEN: ${{secrets.NPM_TOKEN}}

      - name: Set yarn auth
        run: ./scripts/set-yarn-auth.sh
        env:
          NPM_TOKEN: ${{secrets.NPM_TOKEN}}

      - run: yarn install --immutable

      - run: yarn build

      - run: npm run release
        env:
          NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
          GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
