- sanity-test
- pre-deploy-build
- pre-deploy-rebuild
- sync
- build
- rebuild
- test
- start
- restart
- hard-restart
- stop
- Discouraged if possible because then different environments are no longer isolated.
- Not allowed if different roles require different versions (in which case one would be encouraged to turn it into a submodule and run prebuilt local versions instead).
- Can block switching to a different environment if the machine doesn't have the correct version required for that other environment. Defined by:
- Command to check if tool exists
- Command for figuring out what version the tool is at currently
- Command for testing the tool, if desired- in a global context or local to the project.
- Command for seeing which versions are available for installation
- Installation hints or commands (if any divergences from the standard installchain)
Examples:
- git-core, imagemagick...
- Test to see if dependency tool is available and working correctly (has correct permissions etc.)
- Looks for individual preference overrides (e.g., yes, I have brew, but I prefer you try w/ macports first... etc.)
- Ability to do a rehearsal - shows what seems to be missing and what would probably be used to install it.
- Initially support isolated versions for:
- ruby - via rvm
- python - via python-brew
- At some point should be pretty easy to add to that list:
- perl (via perlbrew)
- gcc (via ???)
- anything that's usually switchable via ubuntu's update-alternatives (? - assuming we can do it in isolated environments at the same time)
- These would need to get checked against their respective tools (rvm etc.) to see which versions are available etc. and warnings issued if something else was chosen Defined by:
- Command for seeing which versions are available for installation
- When switching roles or environment symlink for submodule directory changes, which means the .metacon/bin/ added to the users search path (??) is also now looking at the one for the other role/env/etc.
Defined by:
- (Will look for actual location via git locally and create one if necessary(?)...)
- Branch
- Commit (if not head)
- mini-installation commands
- build
- rebuild
- test
- (start/stop/restart/sync/deploy ?)
- Don't know if this is really going to be useful as something separate from "general" yet.
- Could populate list of available versions etc. etc. straight from github (including private via private keys etc.)
- Together they take the place of, for example, Gemfile + Gemfile.lock files
- Together they take the place of pip dependency list files
Type: submodule