dotter 0.7.3

A small dotfile manager
# What is Dotter?
Dotter is a dotfile manager and templater.

Dotfiles are *configuration* files that usually live in the home directory and start with a dot.
Often times, it is desirable to have a backup of all the configurations on your system, which is why a lot of users have their dotfiles saved in a git repository, then symlinking them to their target locations using `ln -s`.

However, there are several issues with that barebones approach:
- Hard to keep track of what comes from where once you have more than a handful of dotfiles
- Tedious to setup on a new machine - you need to manually create every single link
- No real way to handle differences between machines - say you want the battery meter on your bar to not appear on your desktop machine

Dotter aims to solve all those problems by providing a flexible configuration and automatic templating or symlinking to the target locations.

⚠️ **THIS PROJECT IS UNDER HEAVY DEVELOPMENT**. I use it regularly myself so it's reasonably tested, but expect bugs to happen.
If you find a bug, please open an issue describing how to reproduce it, and it will get fixed.\
I create Releases often so make sure you check whether the bug was fixed in the latest one!

# Installation
Download the binary for your platform from the latest release and then put it in your `$PATH` or in your dotfile repository (then you'd run it with `./dotter`).

Alternatively, Dotter is on [crates.io](crates.io/crates/dotter), so run `cargo install dotter` after installing rust to install it that way.

# Wiki
Check out [the wiki](https://github.com/SuperCuber/dotter/wiki) for more information.
Among other things, it explains how to setup and configure Dotter, as well as giving insight on how the templating and deployment works.

# Usage
Now that you've configured all the global and local file sections, you can simply run `dotter` from within your repository.\
All the files will be deployed to their target locations.

Check out `dotter -h` for the command-line flags that Dotter supports:

```
Dotter 0.7.2
A small dotfile manager.

USAGE:
    dotter [FLAGS] [OPTIONS]

FLAGS:
        --dry-run     Dry run - don't do anything, only print information. Implies RUST_LOG=info unless specificed
                      otherwise
        --force       Force - instead of skipping, overwrite target files if their content is unexpected. Overrides
                      --dry-run and implies RUST_LOG=warn unless specified otherwise
    -h, --help        Prints help information
        --undeploy    Un-deploy - delete all deployed files in their target locations. Note that this operates on all
                      files that are currently in cache
    -V, --version     Prints version information

OPTIONS:
        --cache-directory <cache-directory>    Directory to cache into [default: dotter_settings/cache]
        --cache-file <cache-file>              Location of cache file [default: dotter_settings/cache.toml]
    -d, --directory <directory>                Do all operations relative to this directory [default: .]
    -g, --global-config <global-config>        Location of the global configuration [default:
                                               dotter_settings/global.toml]
    -l, --local-config <local-config>          Location of the local configuration [default: dotter_settings/local.toml]
```

Dotter uses the `env_logger` rust library for displaying errors and warnings. To configure logging level, use the `RUST_LOG` environment variable. The options are, in order of least verbose to most verbose: `error`, `warn`, `info`, `debug`, `trace`. The default is `error`.

# Contributing
Contributions to Dotter are welcome, whether in the form of a pull request or an issue (for bug repots, feature requests, or other helpful comments)