on: workflow_call: inputs: type: type: string workflow_dispatch: defaults: run: shell: bash jobs: check_compilation: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] nvim_tag: [nightly] name: ${{ matrix.os }} runs-on: ${{ matrix.os }} env: NVIM: ${{ matrix.os == 'windows-latest' && 'nvim-win64\\bin\\nvim.exe' || 'nvim' }} steps: - uses: actions/checkout@v5 - uses: tree-sitter/setup-action/cli@v1 - uses: ilammy/msvc-dev-cmd@v1 - name: Install and prepare Neovim env: NVIM_TAG: ${{ matrix.nvim_tag }} run: | bash ./scripts/ci-install.sh - name: Setup parsers cache id: parsers-cache uses: actions/cache@v4 with: path: ~/.local/share/nvim/site/parser/ key: parsers-${{ join(matrix.*, '-') }}-${{ hashFiles( './lua/nvim-treesitter/async.lua', './lua/nvim-treesitter/config.lua', './lua/nvim-treesitter/install.lua', './lua/nvim-treesitter/parsers.lua' ) }} - if: ${{ inputs.type == 'build' && steps.parsers-cache.outputs.cache-hit != 'true' }} name: Compile parsers run: $NVIM -l ./scripts/install-parsers.lua --max-jobs=10 - if: inputs.type == 'generate' name: Generate and compile parsers run: $NVIM -l ./scripts/install-parsers.lua --generate --max-jobs=2 - name: Check parsers run: $NVIM -l ./scripts/check-parsers.lua - name: Check queries (nvim) if: ${{ matrix.os == 'windows-latest' }} run: $NVIM -l ./scripts/check-queries.lua - name: Check queries (tsqueryls) if: ${{ matrix.os != 'windows-latest' }} run: make checkquery - name: Run highlight tests if: ${{ matrix.os != 'windows-latest' }} run: make tests TESTS=query NVIM_BIN=$NVIM - name: Run indents tests if: ${{ matrix.os != 'windows-latest' }} run: make tests TESTS=indent NVIM_BIN=$NVIM