name: CI on: push: branches: [master] pull_request: env: CARGO_TERM_COLOR: always jobs: fmt: name: rustfmt runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --component rustfmt - name: Check formatting run: | export PATH="$HOME/.cargo/bin:$PATH" cargo fmt --all --check clippy: name: clippy runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --component clippy - name: Run clippy run: | export PATH="$HOME/.cargo/bin:$PATH" export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml" cargo clippy --workspace --exclude mtp-wasm --all-targets --all-features -- -D warnings -W unreachable-pub test: name: test runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal - name: Run tests run: | export PATH="$HOME/.cargo/bin:$PATH" export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml" cargo test --workspace --exclude mtp-wasm --all-features wasm: name: wasm build runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev lld - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --target wasm32-unknown-unknown - name: Build wasm crate run: | export PATH="$HOME/.cargo/bin:$PATH" export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml" cargo build -p mtp-wasm --target wasm32-unknown-unknown env: RUSTFLAGS: --cfg web_sys_unstable_apis example-usage: name: example usage runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal - name: Check example usage workspace working-directory: example-usage run: | export PATH="$HOME/.cargo/bin:$PATH" export MTP_TYPE_MAPS="$PWD/type-maps.yaml" cargo check --workspace --all-targets --all-features deny: name: cargo-deny runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal - name: Install cargo-deny run: | export PATH="$HOME/.cargo/bin:$PATH" cargo install cargo-deny --locked - name: Run cargo-deny run: | export PATH="$HOME/.cargo/bin:$PATH" cargo deny check machete: name: cargo-machete runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl build-essential pkg-config libssl-dev - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal - name: Install cargo-machete run: | export PATH="$HOME/.cargo/bin:$PATH" cargo install cargo-machete --locked - name: Run cargo-machete run: | export PATH="$HOME/.cargo/bin:$PATH" cargo machete duplicates: name: duplicate code runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip - name: Install Bun run: | curl -fsSL https://bun.sh/install | bash - name: Install dependencies run: | export PATH="$HOME/.bun/bin:$PATH" bun install --frozen-lockfile - name: Run duplicate detector run: | export PATH="$HOME/.bun/bin:$PATH" bun run dup web-client: name: web client runs-on: docker steps: - uses: https://data.forgejo.org/actions/checkout@v4 - name: Install system dependencies run: apt-get update && apt-get install -y --no-install-recommends ca-certificates curl unzip build-essential pkg-config libssl-dev lld - name: Install Rust run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --target wasm32-unknown-unknown - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh - name: Build wasm package run: | export PATH="$HOME/.cargo/bin:$PATH" export MTP_TYPE_MAPS="$PWD/example-usage/type-maps.yaml" wasm-pack build wasm --target web env: RUSTFLAGS: --cfg web_sys_unstable_apis - name: Install Bun run: | curl -fsSL https://bun.sh/install | bash - name: Install dependencies working-directory: example-usage/web-client run: | export PATH="$HOME/.bun/bin:$PATH" bun install --frozen-lockfile - name: Build web client working-directory: example-usage/web-client run: | export PATH="$HOME/.bun/bin:$PATH" bun run build