Sprinter Internals ================== This page discusses the internals of a sprinter environment. Specifically, the building blocks that constitute a sprinter environment. Environment activation/deactivation ----------------------------------- The main tool that environments are activated and deactivated is through "injections" of text into various configuration files on a client machine. A common injections that occurs is injecting the .rc file for an environment into a .bashrc/.bash_profile like so:: #sprinter-ENVIRONMENT inject environment #sprinter-ENVIRONMENT Injections can be performed on any set of files that exist with an environment. An example of common ones are: * the .ssh/config file * .pypirc for local repositories * .vimrc for vim configuration * .emacs for emacs configuration And more! Any file can have configuration injected, which should be removed in the activate/deactivate step. The .rc file ^^^^^^^^^^^^ Every sprinter environment has a .rc file at it's core. Identical in concept to a .bashrc or .bash_profile, this .rc file contains a majority of the configuration of the setup for an environment. The .sprinter-ENVIRONMENT directory ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ A majority of the files required for a sprinter environment are stored in a .sprinter-ENVIRONMENT directory within Features ^^^^^^^^ Each section in a sprinter configuration represents a "feature", which exists in a particular state. Each service is dealt with separately, and is designed a service directory within the configuration root that it can use to place whatever it would like (clone a git repository, unpack a package, etc).