Skip to content

Latest commit

 

History

History
94 lines (78 loc) · 2.93 KB

notes-dependency-tool.md

File metadata and controls

94 lines (78 loc) · 2.93 KB

Tool stack

  • sanity-test
  • pre-deploy-build
    • pre-deploy-rebuild
  • sync
  • build
    • rebuild
  • test
  • start
    • restart
    • hard-restart
  • stop

Installation type

1. general

  • 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...

Installchain

Preferred tool heirarchy per OS & dependency-type.

  • 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.

2. language

  • 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

3. sub (git submodule)

  • 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 ?)

4. git (?)

  • 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.)

5. gem (ruby module)

  • Together they take the place of, for example, Gemfile + Gemfile.lock files

6. pip (python module)

  • Together they take the place of pip dependency list files

Type: submodule