Overview
GRM is still in very early development. I started GRM mainly to scratch my own itches (and am heavily dogfooding it). If you have a new use case for GRM, go for it!
Contributing
To contribute, just fork the repo and create a pull request against develop.
If you plan bigger changes, please consider opening an issue first, so we can
discuss it.
If you want, add yourself to the CONTRIBUTORS file in your pull request.
Branching strategy
The branching strategy is a simplified git-flow.
masteris the "production" branch. Each commit is a new release.developis the branch where new stuff is coming in.- feature branches branch off of
developand merge back into it.
Feature branches are not required, there are also changes happening directly on
develop.
Required tooling
You will need the following tools:
- Rust (obviously) (easiest via
rustup) - Python3
just, a command runner likemake. See here for installation instructions (it's most likely just a simplecargo install just).- Podman & podman-compose for the e2e tests
isort,blackandshfmtfor formatting.ruffandshellcheckfor linting.python-tomlkitfor the dependency update script.mdbookfor the documentation
Here are the tools:
| Distribution | Command |
|---|---|
| Arch Linux | pacman -S --needed python3 rustup just podman podman-compose python-black shfmt shellcheck mdbook python-tomlkit |
| Ubuntu/Debian | apt-get install --no-install-recommends python3 podman podman-compose black shellcheck python3-tomlkit |
Note that you will have to install just and mdbook manually on Ubuntu (e.g.
via cargo install just mdbook if your rust build environment is set up
correctly). Same for shfmt, which may just be a go install mvdan.cc/sh/v3/cmd/shfmt@latest, depending on your go build environment.
For details about rustup and the toolchains, see the installation section.
Development Environment with Nix
Enter a development shell with all tools and dependencies:
$ nix develop
From within the nix shell:
$ just [TARGET]
or
$ cargo build
Update toolchain and dependencies:
$ nix flake update
Build:
$ nix build
Run:
$ nix run . -- [ARGUMENTS]
Find more documentation about Nix Flakes here: https://nixos.wiki/wiki/Flakes
Caveats
The current Nix environment does not source:
- aarch64-unknown-linux-musl
- x86_64-unknown-linux-musl
- podman and related tools
If interest develops this can be added.
Developing Nix
The crate is built using Crane.
Format code with alejandra.