feature:impact
Introduction
feature:impact shows what a feature depends on and what depends on it, directly and transitively, read from your product’s UVL constraints. Run it before you remove a feature, to see what would break, or before you add one, to see what it pulls in.
splent feature:impact notes
feature:impact — notes
Product: my_product
UVL: my_spl.uvl
Depends on
(none) — this feature is independent
Depended on by
← followers (direct)
← notes_tags (direct)
← reports (direct)
← pdf_export (transitive)
Removing notes would break 4 feature(s).
A direct dependency is a constraint in the model, such as pdf_export => reports. A transitive one comes through the graph, as in pdf_export => reports => notes.
Checking that a feature is safe to remove
splent feature:impact pdf_export
Depends on
→ notes (transitive)
→ reports (direct)
Depended on by
(none) — safe to remove
Removing pdf_export has no impact on other features.
Nothing depends on pdf_export, so removing it breaks nothing. What it depends on stays in the product.
What it reads
Only the features your product declares take part, [tool.splent].features plus features_dev or features_prod as SPLENT_ENV says. With SPLENT_ENV unset only features is read, as at runtime. The product’s .env normally sets it.
The model is your product’s SPL model, read offline, from the working copy splent_spl_<name>/ first and then from .splent_cache/spls/<name>@<version>/. A product that sets [tool.splent.uvl].file reads <product>/uvl/<file>.
Reference
| Argument | Description |
|---|---|
FEATURE_REF |
A short name (notes) or a package name (splent_feature_notes) |
| Message | What to do |
|---|---|
No UVL file found |
Fetch the model with spl:fetch |
'<feature>' is not declared in this product. |
Check the name, and that SPLENT_ENV selects the list that declares it |
Both exit 1.
Requirements
- A selected product (
SPLENT_APP).
See also
feature:ordershows the load order the same constraints give.feature:removeremoves a feature from the product.