on: push: branches: - main pull_request: name: CI permissions: contents: read jobs: clippy: name: Clippy ${{ matrix.rust }} / ${{ matrix.triple.target }} runs-on: ${{ matrix.triple.os }} strategy: matrix: # Borrowed from https://github.com/GuillaumeGomez/sysinfo/blob/master/.github/workflows/CI.yml#L45 triple: - { os: 'ubuntu-latest', target: 'x86_64-unknown-linux-gnu', cross: false } - { os: 'ubuntu-latest', target: 'i686-unknown-linux-gnu', cross: true } - { os: 'macos-latest', target: 'x86_64-apple-darwin', cross: false } - { os: 'windows-latest', target: 'x86_64-pc-windows-msvc', cross: false } # iOS - { os: 'macos-latest', target: 'aarch64-apple-ios', cross: true } - { os: 'macos-latest', target: 'x86_64-apple-ios', cross: true } ## ARM64 - { os: 'ubuntu-latest', target: 'aarch64-unknown-linux-gnu', cross: true } - { os: 'ubuntu-latest', target: 'aarch64-unknown-linux-musl', cross: true } ## ARMv7 - { os: 'ubuntu-latest', target: 'armv7-unknown-linux-gnueabihf', cross: true } - { os: 'ubuntu-latest', target: 'armv7-unknown-linux-musleabihf', cross: true } ## ARMv6 - { os: 'ubuntu-latest', target: 'arm-unknown-linux-gnueabihf', cross: true } - { os: 'ubuntu-latest', target: 'arm-unknown-linux-musleabihf', cross: true } # Android - { os: 'ubuntu-latest', target: 'aarch64-linux-android', cross: true } - { os: 'ubuntu-latest', target: 'armv7-linux-androideabi', cross: true } - { os: 'ubuntu-latest', target: 'x86_64-linux-android', cross: true } - { os: 'ubuntu-latest', target: 'i686-linux-android', cross: true } # WASM - { os: 'ubuntu-latest', target: 'wasm32-unknown-unknown', cross: false, always_install_target: true } rust: - stable # MSRV - 1.48.0 steps: - uses: actions/checkout@v2 with: persist-credentials: false - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.rust }} components: clippy - name: Install cross-target if: matrix.triple.cross || matrix.triple.always_install_target run: rustup target add ${{ matrix.triple.target }} - uses: actions-rs/cargo@v1 with: command: clippy args: --target=${{ matrix.triple.target }} --manifest-path=Cargo.toml -- -D clippy::dbg_macro -D warnings -D missing_docs -F unused_must_use use-cross: ${{ matrix.triple.cross }} test: name: Test Desktop OSes strategy: matrix: os: - ubuntu-latest - macos-latest - windows-latest runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 with: persist-credentials: false - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - uses: actions-rs/cargo@v1 with: command: test test_wasm: name: Test wasm32-unknown-unknown runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Test wasm32 run: | rustup target add wasm32-unknown-unknown wasm-pack test --firefox --headless -- --features "js" test_fallback: name: Check fallback implementation runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable - name: "Clippy" # Install a target that is obviously not supported and then check it to ensure # the fallback target stays in sync with the other platforms. run: | rustup target add x86_64-unknown-none cargo clippy --target x86_64-unknown-none -- -D clippy::dbg_macro -D warnings -D missing_docs -F unused_must_use fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: persist-credentials: false - uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable components: rustfmt - uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check