Contributing¶
Contributions are welcome. See AGENTS.md for the conventions.
- Fork the repository and create a branch.
- Make your change with tests. New behaviour is a command in
crates/engine/src/cmd/. - Run
cargo xtask ciandpre-commit run --all-files. - Open a pull request. CI runs on Linux, and the docs build a preview. A maintainer can label it
ci:windows,ci:macosorci:fullto test those platforms before merging;mainand the nightly run test all three. A maintainer'sautomergelabel approves it and squash-merges it once CI passes; pushing again removes the label, and removing it cancels the merge.
Test data¶
Generate small datasets during tests instead of committing fixture files. The shared generator
in tests/support/ogc.rs builds OGC landing pages, collection lists and GeoJSON in memory;
tests/support/ogc_server.rs serves them locally for engine and UI tests. The sorting smoke
test similarly generates its KML, KMZ, CSV and GeoJSON inputs. These run automatically with
cargo test --workspace --locked and cargo xtask ci, without a separate setup step or a
public service. Extend these generators when adding cases.
Documentation¶
The site is built with Zensical:
pip install -r requirements_docs.txt
zensical serve # http://localhost:8000
Images live in rustgis-assets and are linked by URL; don't commit images to this repository.
The screenshots are rendered by the app itself. crates/ui-egui/examples/shots/render.sh
runs the ui_shot scripts beside it and writes WebP files to target/shots/; copy them to
images/ in rustgis-assets. The assistant shot asks a real model, so set an AI Assistant
provider and key first (see AI Assistant).
Releases¶
- Bump
versionin the workspaceCargo.tomland merge it. - Run the Release dry run workflow, which checks the version and builds every package
without publishing anything:
gh workflow run release-dry-run.yml -R opengeos/RustGIS --ref main -f version=<version> - When it passes, publish a GitHub release tagged
v<version>(the tag must matchCargo.toml).
The Release workflow then builds and attaches the Windows installers, zip and MSIX, the
macOS DMGs, the Linux tarballs, .deb and .rpm packages and AppImages, and SHA256SUMS. To try the packaging locally:
cargo build --release --locked -p rustgis -p rustgis-cli
packaging/package.sh 0.1.0 # writes dist/