Skip to content


Subversion checkout URL

You can clone with
Download ZIP


exogenesis command #15

moonglum opened this Issue · 4 comments

2 participants


@railsbros-dirk talked about his idea to create a thor-powered exogenesis command. And I thought about how one could implement this. So I came up with the following:

  • The exogenesis command reads a yml file whenever it is started. You can provide it with a --file option to give the path to a file. When you do not give a path, it will try exogenesis.yml, .exogenesis.yml and ~./exogenesis.yml in that order. This way you can call exogenesis from wherever you are on your system right now. But when you set it up for the first time, you can just give the path to the checked out file in your dotfile repo.
  • The exogenesis command then iterates through the list items of the yml file and initializes each of the items with the child nodes of this node as arguments.
  • It then executes the given command

An example for a YML file:

    - ruby-1.9.3
    - ruby-2.0.0
  path: "~/Code/dotfiles/tilde"

This would initialize the class RVM with the argument["ruby-1.9.3", "ruby-2.0.0"]) and the dotfiles class with"~/Code/dotfiles/tilde"). The names for the parameters are just for the convenience of the user and are not used in any way. Once Apple bundles Ruby 2.0 (In 2043 approx.) we can then use Keyword-arguments for this ^^

The command can be called like this:

exogenesis update
# or
exogenesis --file exogenesis.yml install

What do you think?


It's also imaginable that the initialize method always takes a hash, which is even simpler to implement. Then the names wouldn't go to waste.

@moonglum moonglum referenced this issue

Simplify #23


Really looking forward to this. The Rakefile is the No.1 thing I want to have removed from my dotfiles :wink:


Yep, that’s going to make things simpler :wink:


I will adjust this ticket as soon as #23 is done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.