kord 0.7.1

A tool to easily explore music theory principles.
Documentation
on: [push]

name: Build and Test

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install libasound2-dev
        run: sudo apt-get install libasound2-dev
      - name: Cache
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            ~/.cargo/bin
            target
          key: test
      - uses: actions-rs/toolchain@v1
      - uses: actions-rs/cargo@v1
        with:
          command: test
          args: --features ml
  codecov:
    needs: test
    name: Code Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install libasound2-dev
        run: sudo apt-get install libasound2-dev
      - name: Cache
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            ~/.cargo/bin
            target
          key: codecov
      - uses: actions-rs/toolchain@v1
      - name: Install tarpaulin
        run: cargo install cargo-tarpaulin
        continue-on-error: true
      - run: cargo tarpaulin --features ml --out Xml
      - uses: codecov/codecov-action@v2
  build_windows:
    needs: test
    name: Build Windows
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install mingw-w64
        run: sudo apt-get install mingw-w64
      - name: Cache
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            ~/.cargo/bin
            target
          key: windows
      - uses: actions-rs/toolchain@v1
        with:
          target: x86_64-pc-windows-gnu
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target x86_64-pc-windows-gnu --release
      - uses: actions/upload-artifact@v3
        with:
          name: kord_x86_64-pc-windows-gnu
          path: target/x86_64-pc-windows-gnu/release/kord.exe
  build_linux:
    needs: test
    name: Build Linux
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Install libasound2-dev
        run: sudo apt-get install libasound2-dev
      - name: Cache
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            ~/.cargo/bin
            target
          key: linux
      - uses: actions-rs/toolchain@v1
        with:
          target: x86_64-unknown-linux-gnu
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target x86_64-unknown-linux-gnu --release
      - uses: actions/upload-artifact@v3
        with:
          name: kord_x86_64-unknown-linux-gnu
          path: target/x86_64-unknown-linux-gnu/release/kord
  build_macos:
    needs: test
    name: Build MacOS
    # TODO: Eventually, it would be better to cross-compile with `aarch64-apple-darwin`.
    runs-on: macos-12
    steps:
      - uses: actions/checkout@v2
      - name: Cache
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            ~/.cargo/bin
            target
          key: mac
      - uses: actions-rs/toolchain@v1
        with:
          target: aarch64-apple-darwin
      - uses: actions-rs/cargo@v1
        with:
          command: build
          args: --target aarch64-apple-darwin --release
      - uses: actions/upload-artifact@v3
        with:
          name: kord_aarch64-apple-darwin
          path: target/aarch64-apple-darwin/release/kord