Impact analysis

bluep impact reports direct and transitive dependents and the shortest dependency path to each one.

bluep impact ./model entity:customer
bluep impact ./model table:pg.public.customer --json

Selectors identify logical or physical objects. Their first component is the object kind; physical selectors then include target and schema names. For example, attribute:customer.email identifies a logical attribute, while column:pg.public.customer.email identifies a physical column. Encode a literal dot in a name as %2E and a literal percent sign as %25.

Impact can also start from every object changed by a comparison:

bluep impact ./model --from HEAD~1 --to HEAD
bluep impact ./model --target pg --against-dir ../current
bluep impact ./model --target pg --against-ddl current.sql
bluep impact ./model --target pg --against-db app --host localhost --user app

Model, DDL, and database comparisons use the external source as current state and the model directory as desired state. A non-empty comparison prints the complete report and exits with status 1, which makes the command useful in automation. Object reports exit with status 0; usage errors exit with status 2 and other failures with status 3.