exogenesis
exogenesis copied to clipboard
exogenesis command
@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
--fileoption to give the path to a file. When you do not give a path, it will tryexogenesis.yml,.exogenesis.ymland~./exogenesis.ymlin 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 nodesof this node as arguments. - It then executes the given command
An example for a YML file:
rvm:
rubies:
- ruby-1.9.3
- ruby-2.0.0
dotfiles:
path: "~/Code/dotfiles/tilde"
This would initialize the class RVM with the argument RVM.new(["ruby-1.9.3", "ruby-2.0.0"]) and the dotfiles class with Dotfile.new("~/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.
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.