# Please make sure that the `needs` field for the `conclusion` job
# are updated when adding new jobs!

name: CI
on:
  pull_request:
  merge_group:

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  CARGO_INCREMENTAL: 0
  CARGO_NET_RETRY: 10
  CI: 1
  RUST_BACKTRACE: short
  RUSTUP_MAX_RETRIES: 10
  RUSTFLAGS: "-D warnings -W unreachable-pub --cfg no_salsa_async_drops"

defaults:
  run:
    shell: bash

jobs:
  changes:
    runs-on: ubuntu-latest
    permissions:
      pull-requests: read
    outputs:
      typescript: ${{ steps.filter.outputs.typescript }}
    steps:
      - uses: actions/checkout@v4
      - uses: dorny/paths-filter@1441771bbfdd59dcd748680ee64ebd8faab1a242
        id: filter
        with:
          filters: |
            typescript:
              - 'editors/code/**'

  proc-macro-srv:
    if: github.repository == 'rust-lang/rust-analyzer'
    name: proc-macro-srv
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Install rustup-toolchain-install-master
        run: cargo install rustup-toolchain-install-master@1.6.0

      # Install a pinned rustc commit to avoid surprises
      - name: Install Rust toolchain
        run: |
          RUSTC_VERSION=$(cat rust-version)
          rustup-toolchain-install-master ${RUSTC_VERSION} -c cargo -c rust-src -c rustfmt
          rustup default ${RUSTC_VERSION}

      # Emulate a nightly toolchain, because the toolchain installed above does not have "nightly"
      # in its version string.
      - name: Emulate a nightly toolchain
        run: echo "RUSTC_BOOTSTRAP=1" >> $GITHUB_ENV

      # https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
      - name: Install Rust Problem Matcher
        run: echo "::add-matcher::.github/rust.json"

      - name: Test
        run: cargo test --features sysroot-abi -p proc-macro-srv -p proc-macro-srv-cli -p proc-macro-api -- --quiet

      - name: Check salsa dependency
        run: "! (cargo tree -p proc-macro-srv-cli | grep -q salsa)"

  rust:
    if: github.repository == 'rust-lang/rust-analyzer'
    name: Rust
    runs-on: ${{ matrix.os }}
    env:
      CC: deny_c

    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest, macos-latest]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add --toolchain stable rust-src clippy rustfmt
          # We also install a nightly rustfmt, because we use `--file-lines` in
          # a test.
          rustup toolchain install nightly --profile minimal --component rustfmt
      # https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
      - name: Install Rust Problem Matcher
        if: matrix.os == 'macos-latest'
        run: echo "::add-matcher::.github/rust.json"

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6
      #   with:
      #     workspaces: |
      #       . -> target
      #       ./crates/proc-macro-srv/proc-macro-test/imp -> target

      - name: Install nextest
        uses: taiki-e/install-action@nextest

      - name: Codegen checks (rust-analyzer)
        if: matrix.os == 'ubuntu-latest'
        run: cargo codegen --check

      - name: Run tests
        run: cargo nextest run --no-fail-fast --hide-progress-bar --status-level fail

      - name: Run Clippy
        if: matrix.os == 'macos-latest'
        run: cargo clippy --all-targets -- -D clippy::disallowed_macros -D clippy::dbg_macro -D clippy::todo -D clippy::print_stdout -D clippy::print_stderr

  analysis-stats:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest
    env:
      RUSTC_BOOTSTRAP: 1

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

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add rustfmt

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6

      - name: Bump opt-level
        run: sed -i '/\[profile.dev]/a opt-level=1' Cargo.toml

      - run: cargo build -p rust-analyzer

      - name: ./rust-analyzer
        run: ./target/debug/rust-analyzer analysis-stats . -q

      - name: sysroot/lib/rustlib/src/rust/library/
        run: ./target/debug/rust-analyzer analysis-stats --with-deps --no-sysroot --no-test $(rustc --print sysroot)/lib/rustlib/src/rust/library/ -q

  rustfmt:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest

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

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup default stable
          rustup component add rustfmt

      - run: cargo fmt -- --check

  miri:
    if: github.repository == 'rust-lang/rust-analyzer'
    runs-on: ubuntu-latest

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

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update nightly
          rustup default nightly
          rustup component add miri

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6

      - run: cargo miri test -p intern

  # Weird targets to catch non-portable code
  rust-cross:
    if: github.repository == 'rust-lang/rust-analyzer'
    name: Rust Cross
    runs-on: ubuntu-latest

    strategy:
      matrix:
        target: [powerpc-unknown-linux-gnu, x86_64-unknown-linux-musl, wasm32-unknown-unknown]
        include:
          # The rust-analyzer binary is not expected to compile on WASM, but the IDE
          # crate should
          - target: wasm32-unknown-unknown
            ide-only: true

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

      - name: Install Rust toolchain
        run: |
          rustup update --no-self-update stable
          rustup target add ${{ matrix.target }}

      # - name: Cache Dependencies
      #   uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6

      - run: cargo check --target=${{ matrix.target }} --all-targets -p ide
        if: ${{ matrix.ide-only }}
      - run: cargo check --target=${{ matrix.target }} --all-targets
        if: ${{ !matrix.ide-only }}

  typescript:
    needs: changes
    if: github.repository == 'rust-lang/rust-analyzer' && needs.changes.outputs.typescript == 'true'
    name: TypeScript
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]

    runs-on: ${{ matrix.os }}

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

      - name: Install Nodejs
        uses: actions/setup-node@v4
        with:
          node-version: 22

      - name: Install xvfb
        if: matrix.os == 'ubuntu-latest'
        run: sudo apt-get install -y xvfb

      - run: npm ci
        working-directory: ./editors/code

      #    - run: npm audit || { sleep 10 && npm audit; } || { sleep 30 && npm audit; }
      #      if: runner.os == 'Linux'
      #      working-directory: ./editors/code

      # If this steps fails, your code's type integrity might be wrong at some places at TypeScript level.
      - run: npm run typecheck
        working-directory: ./editors/code

      # You may fix the code automatically by running `npm run lint:fix` if this steps fails.
      - run: npm run lint
        working-directory: ./editors/code

      # To fix this steps, please run `npm run format`.
      - run: npm run format:check
        working-directory: ./editors/code

      - name: Run VS Code tests (Linux)
        if: matrix.os == 'ubuntu-latest'
        env:
          VSCODE_CLI: 1
        run: xvfb-run npm test
        working-directory: ./editors/code

      - name: Run VS Code tests (Windows)
        if: matrix.os == 'windows-latest'
        env:
          VSCODE_CLI: 1
        run: npm test
        working-directory: ./editors/code

      - run: npm run package --scripts-prepend-node-path
        working-directory: ./editors/code

  typo-check:
    name: Typo Check
    runs-on: ubuntu-latest
    timeout-minutes: 10
    env:
      FORCE_COLOR: 1
      TYPOS_VERSION: v1.38.1
    steps:
      - name: download typos
        run: curl -LsSf https://github.com/crate-ci/typos/releases/download/$TYPOS_VERSION/typos-$TYPOS_VERSION-x86_64-unknown-linux-musl.tar.gz | tar zxf - -C ${CARGO_HOME:-~/.cargo}/bin

      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}

      - name: check for typos
        run: typos

  conclusion:
    needs: [rust, rust-cross, typescript, typo-check, proc-macro-srv, miri, rustfmt, analysis-stats]
    # We need to ensure this job does *not* get skipped if its dependencies fail,
    # because a skipped job is considered a success by GitHub. So we have to
    # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
    # when the workflow is canceled manually.
    #
    # ALL THE PREVIOUS JOBS NEED TO BE ADDED TO THE `needs` SECTION OF THIS JOB!
    if: ${{ !cancelled() }}
    runs-on: ubuntu-latest
    steps:
      # Manually check the status of all dependencies. `if: failure()` does not work.
      - name: Conclusion
        run: |
          # Print the dependent jobs to see them in the CI log
          jq -C <<< '${{ toJson(needs) }}'
          # Check if all jobs that we depend on (in the needs array) were successful (or have been skipped).
          jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}'

  cancel-if-matrix-failed:
    needs: rust
    if: ${{ always() }}
    runs-on: ubuntu-latest
    steps:
      - name: Cancel parallel jobs
        run: |
          if jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}'; then
            exit 0
          fi
          # https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28#cancel-a-workflow-run
          curl -L \
          -X POST \
          -H "Accept: application/vnd.github.v3+json" \
          -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          https://api.github.com/repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/cancel
