name: Build on: pull_request: push: branches: - main schedule: - cron: '00 01 * * *' jobs: check: name: Check runs-on: ubuntu-latest strategy: matrix: rust: [stable, msrv] steps: - name: Checkout sources uses: actions/checkout@v3 - name: Use MSRV rust toolchain if: matrix.rust == 'msrv' run: cp .github/workflows/msrv-rust-toolchain.toml rust-toolchain.toml - name: Install stable toolchain uses: helix-editor/rust-toolchain@v1 with: profile: minimal override: true - uses: Swatinem/rust-cache@v1 - name: Run cargo check uses: actions-rs/cargo@v1 with: command: check test: name: Test Suite runs-on: ${{ matrix.os }} env: RUST_BACKTRACE: 1 HELIX_LOG_LEVEL: info steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install stable toolchain uses: helix-editor/rust-toolchain@v1 with: profile: minimal override: true - uses: Swatinem/rust-cache@v1 - name: Cache test tree-sitter grammar uses: actions/cache@v3 with: path: runtime/grammars key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }} restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars- - name: Run cargo test uses: actions-rs/cargo@v1 with: command: test args: --workspace - name: Run cargo integration-test uses: actions-rs/cargo@v1 with: command: integration-test strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] lints: name: Lints runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install stable toolchain uses: helix-editor/rust-toolchain@v1 with: profile: minimal override: true components: rustfmt, clippy - uses: Swatinem/rust-cache@v1 - name: Run cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check - name: Run cargo clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets -- -D warnings - name: Run cargo doc uses: actions-rs/cargo@v1 with: command: doc args: --no-deps --workspace --document-private-items env: RUSTDOCFLAGS: -D warnings docs: name: Docs runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install stable toolchain uses: helix-editor/rust-toolchain@v1 with: profile: minimal override: true - uses: Swatinem/rust-cache@v1 - name: Generate docs uses: actions-rs/cargo@v1 with: command: xtask args: docgen - name: Check uncommitted documentation changes run: | git diff git diff-files --quiet \ || (echo "Run 'cargo xtask docgen', commit the changes and push again" \ && exit 1) queries: name: Tree-sitter queries runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install stable toolchain uses: helix-editor/rust-toolchain@v1 with: profile: minimal override: true - uses: Swatinem/rust-cache@v1 - name: Generate docs uses: actions-rs/cargo@v1 with: command: xtask args: query-check