aboutsummaryrefslogblamecommitdiff
path: root/.github/workflows/build.yml
blob: e0eb5322b9f6d7cb6183db6bb7acd77d764834c0 (plain) (tree)
1
2
3
4
5
6
7
8
           
   
               
       
              
                         





                              
                                 






                                      
                                  
                                  
                                 
                                                                                   
                               
                                  
                            
                                                                                
                                    
                                  
                      
                                                                                       
 
                                 



                        
                             
                              
                                 



                                      
                                       
                        
                                  
                                  
                                 
                                                                                   
                               
                                  
                            
                                                                                
                                    
                                  
                      
                                                                                       
 




















                                                                                         
                                 

                       
             
                                                         
                      
 



                              
                                 







                                      
                                  
                                  
                                 
                                                                                   
                               
                                  
                            
                                                                                
                                    
                                  
                      
                                                                                       
 
                                 




                                 
                         
                                            




                              
                                 





































                                                                                       
name: Build
on:
  pull_request:
  push:
    branches:
      - master
  schedule:
    - cron: '00 01 * * *'

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Cache cargo registry
        uses: actions/cache@v2.1.7
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.7
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.7
        with:
          path: target
          key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check

  test:
    name: Test Suite
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          override: true

      - name: Cache cargo registry
        uses: actions/cache@v2.1.7
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.7
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.7
        with:
          path: target
          key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache test tree-sitter grammar
        uses: actions/cache@v2.1.7
        with:
          path: runtime/grammars
          key: ${{ runner.os }}-v2-tree-sitter-grammars-${{ hashFiles('**/Cargo.lock') }}

      - run: cp .github/workflows/languages.toml ./languages.toml

      - name: Download test tree-sitter grammar
        uses: actions-rs/cargo@v1
        with:
          use-cross: ${{ matrix.cross }}
          command: run
          args: -- --fetch-grammars

      - name: Build test tree-sitter grammar
        uses: actions-rs/cargo@v1
        with:
          use-cross: ${{ matrix.cross }}
          command: run
          args: -- --build-grammars

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test

    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
        rust: [stable]

  lints:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt, clippy

      - name: Cache cargo registry
        uses: actions/cache@v2.1.7
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.7
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.7
        with:
          path: target
          key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - 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

  docs:
    name: Docs
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v3

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Cache cargo registry
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo index
        uses: actions/cache@v2.1.6
        with:
          path: ~/.cargo/git
          key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo target dir
        uses: actions/cache@v2.1.6
        with:
          path: target
          key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

      - 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)