# Contributing
To build this project you'll need rust and cargo.
This package is called `owmods_core` so anytime you want to perform cargo commands on it **do not do it in this folder**, do it from the root of the repo and add `-p owmods_core` to your cargo command.
Ex: `cargo add tokio` should become `cargo add clap -p owmods_core`.
## Typeshare
Upon editing any structs marked with `#[typeshare]`, you'll need to regenerate TypeScript bindings for the GUI. See the [typeshare section](https://github.com/Bwc9876/ow-mod-man/blob/main/owmods_gui/CONTRIBUTING.md#Typeshare) of the GUI contributing file for more info.
## Tests
To run tests run `cargo test -p owmods_core`
## Formatting & Linting
Please format and lint your code before pushing:
```sh
cargo fmt
cargo clippy --all-targets -- -D warnings
```
Git hooks are setup to run clippy on every commit, meaning they may take longer.