(feat): add package.json for easy wasm installs
Some checks failed
CI / rustfmt (push) Failing after 23s
CI / clippy (push) Successful in 1m51s
CI / wasm build (push) Successful in 1m33s
CI / test (push) Successful in 2m21s
CI / example usage (push) Successful in 1m42s
CI / duplicate code (push) Successful in 11s
CI / cargo-machete (push) Successful in 1m38s
CI / web client (push) Failing after 24s
CI / cargo-deny (push) Failing after 3m23s

(feat): add code quality control
(fix): ci rewritten for forgejo
(qol): move docs to dedicated docs/ folder
This commit is contained in:
Alois 2026-06-27 02:32:43 +02:00
commit 22245e673d
20 changed files with 354 additions and 112 deletions

216
.forgejo/workflows/ci.yml Normal file
View file

@ -0,0 +1,216 @@
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