configr 0.5.0

The dead easy way to use config files in your project
Documentation
# Configr

The dead easy way to use config files in your project\
\
[![crates.io](https://img.shields.io/crates/v/configr.svg)](https://crates.io/crates/configr)

This will load a `config.toml` file if it exists, otherwise it will create the needed folders and the toml file.
It can either use the OS config directories which are as follows
 - Linux: `$XDG_CONFIG_HOME/app-name/config.toml`
 - Windows: `%APPDATA%/app-name/config.toml`
 - Mac OS: `$HOME/Library/Application Support/app-name/config.toml`


## Usage

Add the following to your `Cargo.toml`
```toml
configr = "0.5.0"
```
or use [cargo-edit](https://github.com/killercup/cargo-edit/) with `cargo add configr`

then in your project add the following snippet
```rust
use configr::{Config, Configr};
#[derive(Configr, serde::Deserialize)]

pub struct BotConfig {
    bot_username: String,
    client_id: String,
    client_secret: String,
    channel: String,
}
```
replacing BotConfig with your configuration struct

and then load you can load the config, usually at the start of the application with the `load` function to load from the system config directory
```rust
let config = BotConfig::load("bot app").unwrap(); // Will load from /home/USER/.config/bot-app/config.toml
```
or with the `load_with_dir` function to use a custom config directory
```rust
let config = BotConfig::load_with_dir("bot app", "$HOME").unwrap(); // Will load from /home/USER/bot-app/config.toml
```

## Contributors

I am at the moment not accepting any contributions that don't close an issue.\
If you find any problems, or edge cases, please do open an issue!

## License

This project is licensed under the [unlicense](https://unlicense.org/) license.