So...this has evolved to a little bit more than dotfiles over the years. At this point, this repo represents dotfiles, as well as applications and configuration.
If you think this is a little overboard...
bin/setup is used to apply all of the changes to the target system. Each change is represented by a delta (file) in
lib/deltas. These delta files each implement (at least) two functions:
applied- Determines whether or not this delta has been applied already
apply- Performs the necessary steps for applying the delta
Delta scripts can also define options and validate them (see lib/deltas/ruby.sh for an example).
How to Run
brewis installed (if running on OSX), and symlinks all files in
bin/setup -a- Same as above, but also applies a bunch of other deltas (see lib/phases.sh)
You can always, just clone the repo and run
You can also
eval "$(curl -fsSL https://raw.github.com/pseudomuto/dotfiles/master/bootstrap.sh)" on a fresh machine.
This will download (not clone, git might not be installed yet) this repo to
~/dotfiles and run
dotfiles...in case it's a shared system or something)
Deltas are Idempotent
When you run
bin/setup, the deltas are called via
bin/apply <delta> [<delta_args>]. E.g.
bin/apply git -v 2.9.2.
The apply script will check if the delta has already been applied and if so, will notify the setup script that the delta
has already been applied (nothing to do). Otherwise, it will call
apply and if successful, will call
verify that the change has actually occurred.