diff options
author | Justin Wernick <justin@worthe-it.co.za> | 2023-06-15 22:08:32 +0200 |
---|---|---|
committer | Justin Wernick <justin@worthe-it.co.za> | 2023-06-15 22:08:32 +0200 |
commit | abeb43732a2a9b45453e6acb6df3de2395659943 (patch) | |
tree | 2e7ef8ecc6f2fbe91d0e2e374a3899d9e85771d4 /CONTRIBUTING.md | |
parent | e38a8633ce01b702af944c052dd7ae9b621ac3df (diff) |
Split contributing docs into their own file
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r-- | CONTRIBUTING.md | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..e81c4f6 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,93 @@ +# Contributing + +## Development Guide + +### Development Environment Setup + +- Rust + - This project is built using the Rust programming language, and its build + tool Cargo. Information on how to install these tools is available on [the + Rust website](https://www.rust-lang.org/learn/get-started). +- C Compiler + - This is used to built one of the dependencies, libgit2. This can be + obtained from your operating system's package manager. +- Docker + - Some of the tests use Docker to create a simulated environment. This can be + obtained from your operating system's package manager, or the [Docker + website](https://www.docker.com/). + - Docker must be installed, with the `docker` executable on the path. + - Your user must have permission to use docker, including building and running + Docker containers. +- Git + - Some of the tests use Git to test the end to end functionality of the + shell. This can be obtained from your operating system's package manager, or + the [Git website](https://git-scm.com/). + - Git must be installed, with the `git` executable on the path. +- SSH + - Some of the tests use an SSH client to test the end to end functionality of + the shell. I have tested this with OpenSSH, which can be obtained from your + operating system's package manager, or the [Git website](https://git-scm.com/). + - with the `ssh` executable on the path. + +If you're running Arch Linux, these are the steps you'll need to get your +environment ready. + +```sh +sudo pacman -S rustup docker git openssh gcc + +# Rust +rustup default stable + +# Docker +sudo usermod -a -G docker $USER +sudo systemctl start docker.service + +# Note: you need to log out and in again for the new group to take effect +``` + +### Running Tests + +All unit tests are run with Cargo. + +```sh +cargo test +``` + +### Linting + +Clippy should be used for linting. This can be installed using Rustup. + +```sh +rustup component add clippy +``` + +And it can be run via Cargo. + +```sh +cargo clippy +``` + +### Building a Release Binary + +Release binaries should be built in release mode. + +```sh +cargo build --release +``` + +After running this, the binary is available in `./target/release/shackle-shell` + +## Submitting contributions + +If you have a change you'd like to contribute upstream, please open a pull +request on +[Codeberg](https://codeberg.org/worthe-it/shackle-shell/pulls). + +## I Have a Question + +If you have a question which isn't answered by any of the existing +documentation, please open an +[issue](https://codeberg.org/worthe-it/shackle-shell/issues). + +Please search the issues to see if anyone else has already asked the same +question before opening a new issue. |