mailpot/CONTRIBUTING.md

3.3 KiB

Contributing to mailpot

Contributions are welcome and encouraged. They can be anything from spelling corrections, art, documentation, or source code fixes & additions. If a source code contribution is correct, functional and follows the code style and feature goals of the rest of the project, it will be merged.

Table of contents:

To privately contact the repository's owner, check their commit history for their e-mail address.

back to top

Developing environment

You will need a UNIX-like operating system that is supported by Rust. You can install rust and cargo with the rustup tool.

back to top

Testing

All tests can be executed with cargo. Run

cargo test --all --no-fail-fast --all-features

to run all tests.

back to top

How to submit changes

Use gitea's PR functionality. Alternatively, submit patches to the mailing list.

back to top

Choosing what to work on

You can find some tasks in the bug tracker. Additionally, tasks are annotated inside the source code with the keywords FIXME, TODO and others. For a list of all tags search for [tag:. For a list of all references search for [ref:. To find tag references you can use a text search tool of your choice such as grep, ripgrep or others. The CLI tool tagref can also be used:

/path/to/mailpot $ tagref list-refs
[ref:FIXME] @ ./src/module.rs:106
[ref:FIXME] @ ./src/module.rs:867
[ref:FIXME] @ ./src/module.rs:30
[ref:TODO] @ ./src/where.rs:411
...

You can of course filter or sort them by tag:

/path/to/mailpot $ tagref list-refs | grep TODO
...
/path/to/mailpot $ tagref list-refs | sort -u
...

back to top

How to request an enhancement, new features

Simply open a new issue on the bug tracker or post on the mailing list.

back to top

Style Guide / Coding conventions

All Rust code must be formatted by rustfmt, and pass clippy lints.

cargo check --all-features --all --tests --examples --benches --bins
cargo +nightly fmt --all || cargo fmt --all
cargo clippy --no-deps --all-features --all --tests --examples --benches --bins
djhtml -i web/src/templates/* || printf "djhtml binary not found in PATH.\n"

back to top