fix(extract): record JSX namespace member tags as member accesses #3258
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Ecosystem CI | |
| on: | |
| push: | |
| branches: [main] | |
| paths: | |
| - 'crates/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| - 'rust-toolchain.toml' | |
| - 'tests/ecosystem/**' | |
| - '.github/workflows/ecosystem.yml' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - 'crates/**' | |
| - 'Cargo.toml' | |
| - 'Cargo.lock' | |
| - 'rust-toolchain.toml' | |
| - 'tests/ecosystem/**' | |
| - '.github/workflows/ecosystem.yml' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ecosystem-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| permissions: {} | |
| env: | |
| CARGO_TERM_COLOR: always | |
| FALLOW_QUIET: "1" | |
| jobs: | |
| ecosystem: | |
| name: Ecosystem (${{ matrix.project.name }}) | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| project: | |
| - name: vite | |
| repo: vitejs/vite | |
| ref: main | |
| path: packages/vite | |
| - name: create-t3-app | |
| repo: t3-oss/create-t3-app | |
| ref: main | |
| path: cli | |
| - name: next.js-with-typescript | |
| repo: vercel/next.js | |
| ref: canary | |
| path: examples/with-typescript | |
| sparse: examples/with-typescript | |
| - name: sveltekit-template | |
| repo: sveltejs/kit | |
| ref: main | |
| path: packages/create-svelte/templates/default | |
| - name: remix-indie-stack | |
| repo: remix-run/indie-stack | |
| ref: main | |
| path: . | |
| steps: | |
| - name: Checkout fallow | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: ./.github/actions/setup-rust | |
| with: | |
| cache-key: ecosystem | |
| - name: Build fallow (release) | |
| run: cargo build --release -p fallow-cli | |
| - name: Clone target project | |
| env: | |
| PROJECT_REPO: ${{ matrix.project.repo }} | |
| PROJECT_REF: ${{ matrix.project.ref }} | |
| PROJECT_SPARSE: ${{ matrix.project.sparse }} | |
| run: | | |
| # Five third-party repositories are cloned per run, which makes | |
| # transient network and TLS errors the dominant failure mode. The | |
| # analysis step below is deliberately non-gating, so a blip while | |
| # fetching someone else's repository should not be the one thing | |
| # that turns this workflow red. | |
| clone_project() { | |
| if [ -n "$PROJECT_SPARSE" ]; then | |
| git clone --depth 1 --filter=blob:none --sparse \ | |
| --branch "$PROJECT_REF" \ | |
| "https://github.com/$PROJECT_REPO.git" \ | |
| ecosystem-project | |
| else | |
| git clone --depth 1 \ | |
| --branch "$PROJECT_REF" \ | |
| "https://github.com/$PROJECT_REPO.git" \ | |
| ecosystem-project | |
| fi | |
| } | |
| for attempt in 1 2 3; do | |
| if clone_project; then | |
| break | |
| fi | |
| if [ "$attempt" -eq 3 ]; then | |
| echo "::error::could not clone $PROJECT_REPO after $attempt attempts" | |
| exit 1 | |
| fi | |
| echo "clone attempt $attempt failed, retrying" | |
| rm -rf ecosystem-project | |
| sleep "$((attempt * 15))" | |
| done | |
| if [ -n "$PROJECT_SPARSE" ]; then | |
| cd ecosystem-project | |
| git sparse-checkout set "$PROJECT_SPARSE" | |
| fi | |
| - name: Run fallow dead-code | |
| # Never fail the workflow — this is for monitoring, not gating | |
| continue-on-error: true | |
| env: | |
| PROJECT_NAME: ${{ matrix.project.name }} | |
| PROJECT_PATH: ${{ matrix.project.path }} | |
| run: | | |
| cd "ecosystem-project/$PROJECT_PATH" | |
| "$GITHUB_WORKSPACE/target/release/fallow" dead-code --format json \ | |
| > "$GITHUB_WORKSPACE/ecosystem-$PROJECT_NAME.json" 2>&1 || true | |
| - name: Upload results | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: ecosystem-${{ matrix.project.name }} | |
| path: ecosystem-${{ matrix.project.name }}.json | |
| retention-days: 30 |