Keep the page read/write loops in the library #548
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: | |
| 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 (hidraw backend) | |
| run: cargo test --workspace --lib --bins --verbose | |
| - name: Run tests (nusb backend) | |
| run: cargo test --workspace --lib --bins --features nusb --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 sinowealth-isp for the web (WebHID) | |
| run: cargo build -p sinowealth-isp --target wasm32-unknown-unknown | |
| env: | |
| RUSTFLAGS: "--cfg=web_sys_unstable_apis" | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Two Linux variants: the default hidraw backend and the nusb backend. | |
| - TARGET: x86_64-unknown-linux-gnu | |
| OS: ubuntu-latest | |
| FEATURES: "" | |
| LABEL: hidraw | |
| - TARGET: x86_64-unknown-linux-gnu | |
| OS: ubuntu-latest | |
| FEATURES: "nusb" | |
| LABEL: nusb | |
| - TARGET: x86_64-apple-darwin | |
| OS: macos-latest | |
| FEATURES: "" | |
| LABEL: "" | |
| - TARGET: x86_64-pc-windows-msvc | |
| OS: windows-latest | |
| FEATURES: "" | |
| LABEL: "" | |
| needs: test | |
| runs-on: ${{ matrix.OS }} | |
| env: | |
| NAME: sinowealth-kb-tool | |
| TARGET: ${{ matrix.TARGET }} | |
| OS: ${{ matrix.OS }} | |
| FEATURES: ${{ matrix.FEATURES }} | |
| LABEL: ${{ matrix.LABEL }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Cargo cache | |
| uses: actions/cache@v5 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ./target | |
| key: build-cargo-registry-${{matrix.TARGET}}-${{matrix.LABEL}} | |
| - name: Install rust target | |
| run: rustup target add $TARGET | |
| - name: Run build | |
| run: cargo build --release --verbose --target $TARGET ${FEATURES:+--features "$FEATURES"} | |
| - 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 | |
| # include the backend label in the artifact name when set (Linux) | |
| ARTIFACT=$NAME-$TARGET${LABEL:+-$LABEL}-$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 }}${{ matrix.LABEL && format('-{0}', matrix.LABEL) || '' }} | |
| 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 |