dotsy 0.2.0

A basic dotfile manager created to replace my usage of dotbot.
Documentation
# Dotsy

## TODO

- [X] Bootstrapping?
  - [X] Create a config
  - [X] Create a profile
  - [X] dotsy init?
- [x] CLI
  - [x] Allow for commands
  - [x] Allow for command options
- [ ] Parsing config
  - [x] YAML or json?
    - JSON parsing is inbuilt
  - [ ] config validation (global,config and profiles )
- [ ] Installing
  - [X] Link files
  - [ ] Create directories
  - [ ] Install programs with built in pm
  - [X] Run shell commands
  - [X] Install a profile/config? (I don't know how the command structure or file
        structure will work with this)
- [ ] Uninstall
  - [X] Unlink files
  - [ ] Remove directories
  - [ ] Uninstall programs with built in pm
  - [ ] Allow for custom uninstall files to run the reverse of shell commands if
        neccisary
  - [X] Uninstall a profile/config? (I don't know how the command structure or file
        structure will work with this)

## Planning

### Command structure?

- `npx dotsy profile -i <profile-name/'s'>`
- `npx dotsy profile --uninstall <profile-name/'s'>`
- `npx dotsy config -i <config-name/'s>`
- `npx dotsy config --uninstall <config-name/'s>`
- `npx dotsy config ls`
- `npx dotsy profile ls`

### File structure

- dotsy/
- configs/
  - config/
    - config-files/
    - config.json/.yml
- profiles/
  - profile.json/.yml
- .dotsyrc ( This will hold global options such as the package manager install
  and uninstall command etc...)

### test-config.json/.yml

Everything will be optional

```json
{
  "description": "Test config",
  "links": [{ "from": "./test", "to": "~/test" }],
  "directories": ["~/Test-Dir"],
  "packages": ["npm"],
  "shell": ["npm i test"],
  "revert-shell": ["npm uninstall test"]
}
```

### profile.json/.yml example

Everything but configs will be optional

```json
{
  "description": "Test profile",
  "configs": ["test-config"],
  "directories": ["~/Documents"],
  "packages": ["nvim"],
  "shell": ["npm i test"],
  "revert-shell": ["npm uninstall test"]
}
```