name: Rust

on:
  push:
    branches: [ "stable" ]
  pull_request:
    branches: [ "stable" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
    - uses: Swatinem/rust-cache@v2
      with:
        # The prefix cache key, this can be changed to start a new cache manually.
        # default: "v0-rust"
        prefix-key: ""

        # A cache key that is used instead of the automatic `job`-based key,
        # and is stable over multiple jobs.
        # default: empty
        shared-key: ""

        # An additional cache key that is added alongside the automatic `job`-based
        # cache key and can be used to further differentiate jobs.
        # default: empty
        key: ""

        # A whitespace separated list of env-var *prefixes* who's value contributes
        # to the environment cache key.
        # The env-vars are matched by *prefix*, so the default `RUST` var will
        # match all of `RUSTC`, `RUSTUP_*`, `RUSTFLAGS`, `RUSTDOC_*`, etc.
        # default: "CARGO CC CFLAGS CXX CMAKE RUST"
        env-vars: ""
        
        # The cargo workspaces and target directory configuration.
        # These entries are separated by newlines and have the form
        # `$workspace -> $target`. The `$target` part is treated as a directory
        # relative to the `$workspace` and defaults to "target" if not explicitly given.
        # default: ". -> target"
        workspaces: ". -> target"
    - name: Build
      run: cargo build --verbose
    - name: Run tests
      run: cargo test --verbose
