-= GumpInternals =-
The GumpModel is a tree of a workspace containing modules, which contain projects
- Projects in the tree are linked (bi-directionally) via dependencies
A GumpRun is build using a pattern match expression against project names.
-= GumpRun =-
Contains the list of projects expanded from the passed in expressions (or 'all'), but also contains the 'build sequence' for that list (the tree of things to build to complete that list) and the modules that intersects with. This becomes the 'work order' for a run.
-= Annotatable =-
Can contain a list of 'info', 'warn', 'error' text messages.
-= Workable =-
Can be worked on (typically by
-= FileHolder =-
Can contain a list of file references (directories or files).
-= Stateful =-
Holds 'state' (succeeded, failed) and 'reason' (if not Unset, e.g. 'build failed').
-= State Propogation =-
If a project's "state" is set to smething bad (e.g. failed) then that propogates "up" to all "dependees" of that project that do not already have a bad state. When state propogates it changes (from whatever negative) to "prerequisite failed", and the originating project becomes the ["Cause"] for these projects.
If a module's state is set to something bad (failed) then that propogates down to all it's projects, and in turn 'up' (to dependees of those projects). A module can be a ["Cause"].