name: Release

on:
  push:
    tags:
      - 'v*'

permissions:
  contents: write

jobs:
  release:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Install pnpm
        uses: pnpm/action-setup@v2
        with:
          version: 9

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 20.x
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Compile TypeScript
        run: pnpm run compile

      - name: Run tests
        run: pnpm test -- --run

      - name: Package extension
        run: pnpm run package

      - name: Get version from tag
        id: version
        run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT

      - name: Create GitHub Release
        uses: softprops/action-gh-release@v1
        with:
          files: "*.vsix"
          generate_release_notes: true
          draft: false
          prerelease: ${{ contains(github.ref, '-') }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      # Uncomment when ready to publish to VS Code Marketplace
      # - name: Publish to VS Code Marketplace
      #   run: pnpm vsce publish --no-dependencies
      #   env:
      #     VSCE_PAT: ${{ secrets.VSCE_PAT }}

      # Uncomment when ready to publish to Open VSX
      # - name: Publish to Open VSX
      #   run: pnpm ovsx publish *.vsix -p ${{ secrets.OVSX_PAT }}

