Caligari
"...I must become Caligari!"
Description
caligari
installs configuration files by symbolically linking all of the
files from the given paths directly to the current user's home directory with
the same relative file structure, creating any requisite directories as-needed.
Usage
caligari
allows you to exclude files matching a given fnmatch
pattern with
the --exclude/-x flag. For example, the following may be used to exclude
all backup files and vim
swap files:
caligari --exclude '**/*~' '**/*.swp'
By default, caligari
will simply skip over any files which already exist in
the current user's home directory; however, you can force caligari
to
overwrite existing files with the --force/-f flag:
caligari --force
caligari
is normally silent except for warnings and errors; if you want more
explicit output about the operations caligari
performs, simply use the
--verbose/-V flag. This flag will report all of the file system operations
caligari
performs, each with an appropriate label:
- ln for created symbolic links
- path for created directory paths
- rm for unlinked files
- err for any errors encountered
caligari
reports operations in this way so that they may be filtered in
whichever way the user desires. For example, you could print a list of the
files removed by a forceful caligari
run like so:
caligari --force --verbose | awk '/^rm:/ { print $2 }'
You may also simulate the actions caligari
would normally take upon the file
system by passing the --simulate/-s flag. This implies the --verbose
flag, allowing you to inspect which actions caligari
would take if run:
$ caligari --simulate --force
rm: /home/user/do-not-remove
ln: /home/user/do-not-remove
Configuration
caligari
may be configured by editing the system-wide configuration file
(defined by default as /etc/xdg/caligari.yml) or the per-user configuration
file (defined by default as ~/.config/caligari.yml). These configuration
files are simple YAML files which define the default exclusion patterns used
by caligari
.
Example ~/.config/caligari.yml to automatically exclude the .git directory and all README.md files:
---
:exclude:
- "**/.git"
- "**/README.md"
Installation
gem install caligari
Development
Just clone the git repository and run bundle install
to install the
development and runtime dependencies:
git clone https://github.com/vthrenody/caligari.git
cd caligari
bundle install
You can run Caligari locally for development purposes by running it directly from the repository like so:
bin/caligari
To install a local copy of Caligari, simply run rake install
.
License
Caligari is made available under the terms of the MIT Expat license. See the included LICENSE file for more information.