name: Build & Publish

on:
  push:
    branches: [main]
    tags: ['v*']

jobs:
  publish:
    runs-on: ubuntu-latest
    container:
      image: node:22-bookworm-slim
    steps:
      - uses: actions/checkout@v4

      - name: Install dependencies
        run: npm ci

      - name: Run tests
        run: npx vitest run --exclude 'e2e/**'

      - name: Build library
        run: npm run build:lib

      - name: Publish package
        shell: bash
        run: |
          case "$GITHUB_REF" in
            refs/tags/v*)
              VERSION="${GITHUB_REF_NAME#v}"
              npm version "$VERSION" --no-git-tag-version --allow-same-version
              TAG="latest"
              ;;
            *)
              SHORT_SHA=$(echo "$GITHUB_SHA" | head -c 7)
              DATE=$(date +%Y%m%d)
              npm version "0.0.0-snapshot.${DATE}.${SHORT_SHA}" --no-git-tag-version
              TAG="dev"
              ;;
          esac
          echo '@cameleer:registry=https://gitea.siegeln.net/api/packages/cameleer/npm/' > .npmrc
          echo '//gitea.siegeln.net/api/packages/cameleer/npm/:_authToken=${{ secrets.REGISTRY_TOKEN }}' >> .npmrc
          npm publish --tag "$TAG"
