name: Rust

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-20.04
    steps:
    - name: Install build tools
      run: sudo apt-get update && sudo apt-get install build-essential binutils-arm-none-eabi libelf-dev zip -y
    - uses: actions/checkout@v3
    - name: Cache
      uses: actions/cache@v2.1.7
      with:
        path: |
          ~/.cargo/registry
          ~/.cargo/git
          ~/target
          mgba-test-runner/target
        key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}

    - name: install mgba-test-runner
      run: cargo install --path mgba-test-runner --verbose
    - name: Set CARGO_TARGET_DIR
      run: echo "CARGO_TARGET_DIR=$HOME/target" >> $GITHUB_ENV
    - name: Install gbafix
      run: cargo install gbafix
    - uses: extractions/setup-just@v1
    - name: Setup mdBook
      uses: peaceiris/actions-mdbook@v1
      with:
        mdbook-version: '0.4.13'
    - name: Build and test all crates
      run: just ci