name: Rust

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

env:
  CARGO_TERM_COLOR: always

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust:
          - stable
          - beta
          - nightly
    steps:
    - uses: actions/checkout@v2
    - name: Install latest nightly
      uses: actions-rs/toolchain@v1
      with:
          toolchain: ${{ matrix.rust }}
          override: true
    - name: Build
      run: cargo build --verbose
    - name: Run tests
      run: cargo test --verbose
    - name: Run tests without features
      run: cargo test --verbose --no-default-features
    - name: Package
      run: cargo package
    - name: Test package
      run: cd $(find target/package/ -maxdepth 1 -mindepth 1 -type d) && cargo test
    - name: Test package without features
      run: cd $(find target/package/ -maxdepth 1 -mindepth 1 -type d) && cargo test --no-default-features
  regen:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Regen
      run: cd scripts && python3 unicode.py
    - name: Diff
      run: diff src/tables.rs scripts/tables.rs
