Swappy
Swappy lets you easily swap between config file sets.
Use Cases
- You have, for instance, 2 different .vimrc files that you switch back and forth between depending on the circumstances. It doesn't have to be .vimrc files; it can be any config file. In fact, it doesn't even have to be a config file, it can be any file—even multiple files!
- You want to take someone's dotfiles out for a spin, and easily switch back to yours.
Installation
gem install swappy
Run swappy --help
as a sanity check.
Example
First, you put a .swappy.json
config file in your ~
. Here's an example:
{
"config_sets": {
"vim_heavy": {
"link_root": "~",
"source_root": "~/.config_sets/vim_heavy",
"configs": {
".vimrc": "vimrc"
}
},
"vim_minimalist": {
"link_root": "~",
"source_root": "~/.config_sets/vim_minimalist",
"configs": {
".vimrc": "vimrc"
}
}
}
}
This file has two config sets:
-
vim_heavy (files live in
~/.config_sets/vim_heavy
) -
vim_minimalist (files live in
~/.config_sets/vim_minimalist
)
You can verify these are configured correctly by running swappy list
. You should see:
vim_heavy
vim_minimalist
When you issue the command swappy swap vim_heavy
, ~/.vimrc
will now be a symbolic link to ~/.config_sets/vim_heavy/vimrc
.
"BUT WAIT!", you say, "What happens if I already have a .vimrc
in my ~
?" I'm glad you asked. Swappy will back it up within the same directory. The backup file will be named with a timestamp, like this:
.vimrc.backup.1399229001
Even your symlinks will be backed up!
This effectively means that a history of your swaps will be stored within the same directory.
Contributing
- Fork it ( http://github.com/facto/swappy/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Write code (don't forget the tests!)
- Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request