mdespuits / dotify

A CLI Tool for managing your dotfiles.
http://mattdbridges.github.com/dotify
MIT License
158 stars 10 forks source link

Manifests to Install 3rd Party Projects? #16

Open kylewest opened 12 years ago

kylewest commented 12 years ago

Do you have plans to, and/or would you accept a pull request to, introduce support for manifests that allow the easy installation of 3rd party tools?

Over in the YADR project, we have been discussing the best way to handle:

  1. installation of the various files we need
  2. customizations

We've already written a simple rake task to symlink the appropriate files, but want to focus our attention on the actual configuration. Not the plumbing.

How It Works - Draft

  1. Projects define a manifest that includes both dependencies and their own installation instructions (these are like homebrew brews).
  2. The user does ...
dotify install yadr

...Checking dependencies...

Do you want to install prezto?
Y
...Installing...
...Configuring...

Do you want to install vim?
...<snip>...

...Installing YADR...
...Configuring YADR...
  1. Dotify analyzes the dependencies, and installs all the appropriate configuration files per instructions included in the manifest.
  2. Running dotify upgrade yadr updates files to the latest version.
  3. Extra Credit Dotify provides a central location for the customization of dotfiles. When using a project like yadr, oh-my-zsh, or prezto the user doesn't want to maintain a project fork just so they can make changes to the configuration. Manifests should include customization instructions. Dotify should create the appropriate directories and files. Changes to these files can be managed using git. Here's how we customize zsh using custom/zsh/[before|after] directories.

I'd be happy to work on the feature, but will likely need some guidance on how best to tackle it. I also noticed you're working on a refactoring so we can discuss once that is done if that makes more sense.

Kyle

kylewest commented 12 years ago

Link to another issue on YADR: Remove Installer, Use 3rd Party Tool.

mdespuits commented 12 years ago

TL;DR I will consider this if you can provide a good use case for making this gem pluggable and making this feature request a plugin.

@kylewest Sounds like quite an interesting undertaking. Sounds eerily similar to homebrew for dotfiles and configuration which is fantastic. Right now, however, this little gem is not very robust and, as you mentioned, is undergoing some heavy refactoring / feature changes and additions. If I may quote something from the bottom of the README:

This tool is developed with much influence from 37singals' fantastic idea of Do Less. This is meant to be a simple tool.

I really am not quite sure if this feature is really fit to be integrated directly into this gem and it's intended purpose. However, I have been entertaining the idea of making it pluggable to be able to add features and/or tasks (such as the one you are proposing). Not entirely sure I want to venture down that road, but if you can give me a good use case I would be willing to consider it and work with you on implementing it.