feat: auto-select nusb backend on Linux #561
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test & Build | |
| on: [push] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| defaults: | |
| run: | |
| # necessary for windows | |
| shell: bash | |
| jobs: | |
| nix-build: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| with: | |
| fetch-depth: 0 | |
| - uses: cachix/install-nix-action@v31 | |
| with: | |
| github_access_token: ${{ secrets.GITHUB_TOKEN }} | |
| - uses: cachix/cachix-action@v17 | |
| with: | |
| # TODO: rename to `sinowisp` once the Cachix cache is renamed/created | |
| name: sinowealth-kb-tool | |
| authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} | |
| - name: Build | |
| run: nix build | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Cargo cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ./target | |
| key: test-cargo-registry | |
| - name: Lint | |
| run: cargo fmt -- --check | |
| test: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Cargo cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ./target | |
| key: test-cargo-registry | |
| - name: Run tests | |
| run: cargo test --workspace --lib --bins --verbose | |
| wasm: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Cargo cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ./target | |
| key: wasm-cargo-registry | |
| - name: Install wasm target | |
| run: rustup target add wasm32-unknown-unknown | |
| - name: Build the library for the web (WebHID) | |
| run: cargo build --lib --no-default-features --target wasm32-unknown-unknown | |
| env: | |
| RUSTFLAGS: "--cfg=web_sys_unstable_apis" | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Linux always uses hidra's nusb backend (auto-selected in Cargo.toml). | |
| - TARGET: x86_64-unknown-linux-gnu | |
| OS: ubuntu-latest | |
| - TARGET: x86_64-apple-darwin | |
| OS: macos-latest | |
| - TARGET: x86_64-pc-windows-msvc | |
| OS: windows-latest | |
| needs: test | |
| runs-on: ${{ matrix.OS }} | |
| env: | |
| NAME: sinowisp | |
| TARGET: ${{ matrix.TARGET }} | |
| OS: ${{ matrix.OS }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Cargo cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ./target | |
| key: build-cargo-registry-${{matrix.TARGET}} | |
| - name: Install rust target | |
| run: rustup target add $TARGET | |
| - name: Run build | |
| run: cargo build --release --verbose --target $TARGET | |
| - name: Compress | |
| run: | | |
| mkdir -p ./artifacts | |
| # windows is the only OS using a different convention for executable file name | |
| if [[ $OS =~ ^windows.*$ ]]; then | |
| EXEC=$NAME.exe | |
| else | |
| EXEC=$NAME | |
| fi | |
| if [[ $GITHUB_REF_TYPE =~ ^tag$ ]]; then | |
| TAG=$GITHUB_REF_NAME | |
| else | |
| TAG=$GITHUB_SHA | |
| fi | |
| ARTIFACT=$NAME-$TARGET-$TAG | |
| mv ./target/$TARGET/release/$EXEC ./$EXEC | |
| tar -czf ./artifacts/$ARTIFACT.tar.gz $EXEC | |
| - name: Archive artifact | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: result-${{ matrix.TARGET }} | |
| path: | | |
| ./artifacts | |
| release: | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| needs: build | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: result-* | |
| merge-multiple: true | |
| path: ./artifacts | |
| - name: Release | |
| uses: softprops/action-gh-release@v3 | |
| with: | |
| draft: true | |
| generate_release_notes: true | |
| files: ./artifacts/*.tar.gz |