aboutsummaryrefslogblamecommitdiff
path: root/.github/workflows/build.yml
blob: 69d88f83695ff485cce8f4a3f95b6befb1a59430 (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@v3
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-v2-cargo-registry-

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

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

      - 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@v3
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-v2-cargo-registry-

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

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

      - name: Copy minimal languages config
        run: cp .github/workflows/languages.toml ./languages.toml

      - name: Cache test tree-sitter grammar
        uses: actions/cache@v3
        with:
          path: runtime/grammars
          key: ${{ runner.os }}-v2-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
          restore-keys: ${{ runner.os }}-v2-tree-sitter-grammars-

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

    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@v3
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-v2-cargo-registry-

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

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

      - 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@v3
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-v2-cargo-registry-

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

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

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