Skip to content

how to contribute tooling

Douwe de Vries edited this page Jul 1, 2026 · 2 revisions

Tooling

This page maps the main repository tools to their source files and validation role. For the contributor cycle, see development workflow. For command coverage, see testing.

Cargo tooling

Tool or command Role
cargo fmt --check Enforces Rust formatting for /Users/vriesd/projects/csv-align/src/ and /Users/vriesd/projects/csv-align/tests/.
cargo test Runs shared library, API, workflow, packaging-script, and release-metadata integration tests.
cargo clippy -- -D warnings Fails on Rust warnings in the root crate.
(cd /Users/vriesd/projects/csv-align/src-tauri && cargo test) Runs desktop wrapper tests.
(cd /Users/vriesd/projects/csv-align/src-tauri && cargo fmt --check && cargo clippy -- -D warnings) Enforces desktop wrapper formatting and linting.
cargo install tauri-cli --locked --version "^2" Installs the Tauri CLI used for desktop builds.

Rust manifests are /Users/vriesd/projects/csv-align/Cargo.toml and /Users/vriesd/projects/csv-align/src-tauri/Cargo.toml.

npm and frontend tooling

Tool or command Role
(cd /Users/vriesd/projects/csv-align/frontend && npm install) Installs frontend dependencies for local work. CI uses npm ci.
(cd /Users/vriesd/projects/csv-align/frontend && npm run dev) Starts the Vite dev server for frontend iteration.
(cd /Users/vriesd/projects/csv-align/frontend && npm test) Runs Vitest.
(cd /Users/vriesd/projects/csv-align/frontend && npm run lint) Runs oxlint with denied warnings.
(cd /Users/vriesd/projects/csv-align/frontend && npm run build) Runs TypeScript and Vite production build.
(cd /Users/vriesd/projects/csv-align/frontend && npm run preview) Previews a built frontend locally.

Frontend scripts and dependencies live in /Users/vriesd/projects/csv-align/frontend/package.json.

Tauri tooling

/Users/vriesd/projects/csv-align/src-tauri/tauri.conf.json controls:

  • Desktop dev startup through beforeDevCommand.
  • Desktop build startup through /Users/vriesd/projects/csv-align/scripts/build_frontend_for_tauri.sh.
  • Frontend dist path /Users/vriesd/projects/csv-align/frontend/dist.
  • CSP and dev CSP.
  • Bundle targets, identifiers, icons, Linux package files, and macOS entitlements.

/Users/vriesd/projects/csv-align/src-tauri/capabilities/default.json grants default desktop permissions, webview-window creation, and dialog open/save access.

Release and packaging scripts

Script Role
/Users/vriesd/projects/csv-align/scripts/check_release_metadata.py Validates synchronized version metadata and optional tag/changelog matching.
/Users/vriesd/projects/csv-align/scripts/build_frontend_for_tauri.sh Builds the frontend or verifies a prebuilt dist when CSV_ALIGN_USE_PREBUILT_FRONTEND=1.
/Users/vriesd/projects/csv-align/scripts/normalize_linux_deb_desktop_id.py Rewrites unsigned .deb artifacts to the reverse-DNS desktop id contract before signing.
/Users/vriesd/projects/csv-align/scripts/validate_linux_deb_metadata.py Validates .deb and .rpm AppStream, desktop-file, binary, and license metadata.
/Users/vriesd/projects/csv-align/scripts/build_rpm_package.py Builds the project-owned canonical RPM from the Tauri release binary.
/Users/vriesd/projects/csv-align/scripts/build_apt_repository.py Builds signed static APT repository metadata and the repository setup package.
/Users/vriesd/projects/csv-align/scripts/install-apt-repo.sh End-user APT repository setup installer uploaded with releases.

CI tooling

/Users/vriesd/projects/csv-align/.github/workflows/ci.yml uses path filters to avoid full CI on docs-only changes. It runs Rust tests, formatting, clippy, frontend tests, frontend lint, frontend build, Tauri wrapper tests, Linux package builds, package metadata validators, and Debian signing on main pushes.

/Users/vriesd/projects/csv-align/.github/workflows/release.yml runs on v* tags. It validates release metadata, waits for the matching successful CI run on main, downloads reusable Linux and frontend artifacts, verifies signatures and metadata, builds the signed APT repository, publishes Linux assets, builds macOS DMGs, and publishes the draft GitHub Release.

Key source files

File Purpose
/Users/vriesd/projects/csv-align/Cargo.toml Root Rust crate manifest.
/Users/vriesd/projects/csv-align/src-tauri/Cargo.toml Desktop wrapper manifest.
/Users/vriesd/projects/csv-align/frontend/package.json Frontend scripts and dependencies.
/Users/vriesd/projects/csv-align/src-tauri/tauri.conf.json Tauri build, bundle, CSP, and package configuration.
/Users/vriesd/projects/csv-align/.github/workflows/ci.yml CI pipeline.
/Users/vriesd/projects/csv-align/.github/workflows/release.yml Tagged release pipeline.

Clone this wiki locally