# Contributing
First of all, thank you for considering contributing to `scout`. This is a small project and it has a small set of features, but any contribution is always welcome.
Before contributing make sure you read the project's [Code of conduct][coc].
## How to contribute
Feel free to open an issue or a pull request explaining what you want to do or what bug did you find, for example.
Some things that you can do:
* Review a [Pull Request][pulls]
* Fix an [issue][issues]
* Report a bug
* Update or improve the [documentation][docs]
* Make a website
If you are going to report a bug these would be some good things to put in your report:
* Some reproduction steps
* OS where it happend
* How did you install the package (from source, from a package manager)
* Rust version
## Development
The code base runs against Rust stable. You'll need Rust `v1.43` or higher.
To install Rust it's better if you checkout [`rustup`][rustup].
If you make any change and you want to manually check the changes, you can use `cargo run`:
```
# use -- to pass options to the program
You can run tests with the standard `cargo` command:
```
$ cargo test
```
### Formatter
Use [`rustfmt`][rustfmt] as the default code formatter:
```
$ rustup compose add rustfmt
$ cargo fmt
```
### Linter
Use [`clippy`][clippy] as the default linter:
```
$ rustup compose add clippy
$ cargo clippy -- -D warnings
```
If nothing happens, try to clean the previous build and run `clippy` again
```
$ cargo clean
$ cargo clippy -- -D warnings
```
[coc]: ./CODE_OF_CONDUCT.md
[pulls]: https://github.com/jhbabon/scout/pulls
[issues]: https://github.com/jhbabon/scout/issues
[docs]: ./README.md
[rustup]: https://rustup.rs/
[rustfmt]: https://github.com/rust-lang/rustfmt
[clippy]: https://github.com/rust-lang/rust-clippy