react-auditor 0.5.1

A blazing-fast Rust CLI to scan JS/TS/React code for best practices, quality, and security issues.
Documentation
name: Publish npm Package

on:
  workflow_run:
    workflows: ["Release"]
    types: [completed]
jobs:
  publish:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      id-token: write
      actions: read
    environment: npm

    steps:
      - uses: actions/checkout@v7

      - name: Determine version
        id: version
        run: |
          mkdir -p tag-artifact
          gh run download "${{ github.event.workflow_run.id }}" \
            --name release-tag \
            --dir tag-artifact \
            --repo "${{ github.repository }}"
          TAG=$(cat tag-artifact/RELEASE_TAG)
          echo "tag=$TAG" >> "$GITHUB_OUTPUT"
          echo "version=${TAG#v}" >> "$GITHUB_OUTPUT"
        env:
          GH_TOKEN: ${{ github.token }}

      - uses: actions/setup-node@v6
        with:
          node-version: 24
          registry-url: https://registry.npmjs.org

      - name: Download all release artifacts
        uses: actions/download-artifact@v8
        with:
          pattern: react-auditor-*
          path: artifacts
          merge-multiple: true
          github-token: ${{ secrets.GITHUB_TOKEN }}
          run-id: ${{ github.event.workflow_run.id }}

      - name: Extract and rename binaries
        shell: bash
        run: |
          declare -A PLATFORM_MAP=(
            ["x86_64-unknown-linux-gnu"]="linux-x64"
            ["aarch64-unknown-linux-gnu"]="linux-arm64"
            ["x86_64-apple-darwin"]="darwin-x64"
            ["aarch64-apple-darwin"]="darwin-arm64"
            ["x86_64-pc-windows-msvc"]="win32-x64"
          )

          for target in "${!PLATFORM_MAP[@]}"; do
            plat="${PLATFORM_MAP[$target]}"
            extract_dir="/tmp/extract-$target"
            mkdir -p "$extract_dir"
            archive=$(ls artifacts/react-auditor-${target}-* 2>/dev/null | head -1)
            if [ -z "$archive" ]; then
              echo "No archive found for $target"
              continue
            fi
            echo "Extracting $archive"
            if [[ "$archive" == *.zip ]]; then
              unzip -o "$archive" react-auditor.exe -d "$extract_dir"
              cp "$extract_dir/react-auditor.exe" "npm/react-auditor-${plat}.exe"
            else
              tar xzf "$archive" -C "$extract_dir"
              cp "$extract_dir/react-auditor" "npm/react-auditor-${plat}"
            fi
          done

          chmod +x npm/react-auditor-* 2>/dev/null || true
          ls -la npm/react-auditor-*

      - name: Verify at least one binary exists
        run: |
          count=$(ls -1 npm/react-auditor-* 2>/dev/null | wc -l)
          if [ "$count" -eq 0 ]; then
            echo "No binaries were extracted!"
            ls -la artifacts/
            exit 1
          fi
          echo "Found $count platform binaries"

      - name: Publish to npmjs
        working-directory: npm
        run: npm publish --provenance --access public
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}