# Wagon
Utility to make dotfiles portable with symbolic links
[![build][badge]](https://github.com/yasuyuky/wagon/actions)
[badge]: https://github.com/yasuyuky/wagon/workflows/build/badge.svg
# Installation
`cargo install wagon`
# Usage
Create the dotfiles in your git-controlled directory.
Place dotfiles in a subdirectory such as the following.
```tree
dotfiles
├── .bashrc
├── .config
│ ├── direnv
│ │ ├── .gitignore
│ │ └── direnvrc
│ ├── flake8
│ ├── git
│ │ └── ignore
│ ├── peco
│ │ └── config.json
│ ├── starship.toml
│ └── yapf
│ └── style
├── .gitconfig
├── .ssh
│ └── config
├── .tmux.conf
├── .vim
├── .vimrc
├── .vscode
│ └── settings.json
├── .zsh
└── .zshrc
```
Then execute the following command, and symbolic links to your files will be created in your home.
```console
wagon link .
```
You can also use the `copy` subcommand to copy files.
```console
wagon copy .
```
## `wagon repo` Command
```console
wagon repo OWNER/REPO # for example yasuyuky/wagon
```
This command will checkout the GitHub Repository to `~/src/github.com/OWNER/REPO`
# Configuration
The `.wagon.toml` file controls the behavior of the command.
## `dest` field
By default, the command links the configuration file under your home. If you want to change this behavior, set the `dest` field.
```toml
"dest" = "/"
```
## `init` field
The `init` field can be used to initialize the application to use each configuration file.
```toml
[[init]]
command = "brew"
args = ["install", "direnv"]
os = "macos"
```
For example, you can use the following command to run the initial configuration.
```
wagon init direnv
```