feature:order
Introduction
feature:order shows the order in which your product loads its features. A feature always comes after the features it requires in the UVL model, and a refiner after the feature it refines. Run it to understand why one feature loads before another, or what breaks if you remove one.
splent feature:order
Feature load order — my_first_app
────────────────────────────────────────────────────────
# Feature Requires
────────────────────────────────────────────────────────
1 splent-io/splent_feature_auth@v1.2.0 —
2 splent-io/splent_feature_mailer@v1.3.2 —
3 splent-io/splent_feature_notes@v1.3.0 splent_feature_auth
4 splent-io/splent_feature_reports@v1.0.0 splent_feature_notes
UVL: my_spl.uvl
The app registers the features in this order, and the migrations, the seeders and the feature stacks of product:up follow it too. The list is features plus features_dev or features_prod for the current SPLENT_ENV. Unrelated features keep their pyproject.toml order.
Finding what breaks if you remove a feature
splent feature:order --reverse notes
Reverse dependencies — my_first_app
UVL: my_spl.uvl
⚠ Removing splent_feature_notes would break 1 feature(s):
• splent_feature_reports (direct)
It takes the short name or the full one. The search is transitive, so a feature that needs one that needs notes is listed too, marked (transitive). When nothing depends on it, you read It can be safely removed.
Advanced
Requires lists the direct dependencies from the UVL constraints. A refiner is placed after its base without showing it there.
feature:xrayshows who refines whom.
Without a UVL model the order is the
pyproject.tomlorder, with each refiner moved after its base, and--reversestops with an error.
Reference
| Option | Description |
|---|---|
--short |
Bare names. Same as --no-namespace --no-version |
--no-namespace |
Hide the namespace prefix |
--no-version |
Hide the version suffix |
--reverse TEXT |
List the features that would break if this one were removed |
--json |
Print each row as an object with position, feature, namespace, name, version and requires |
| Message | Exit | What to do |
|---|---|---|
Circular dependency detected among features: [...] |
1 | Review the constraints of your .uvl file |
No UVL file found — cannot compute reverse dependencies. |
1 | Fetch the model with spl:fetch |
'<feature>' is not declared in this product. |
1 | Pass a feature the product declares |
Requirements
- A selected product (
SPLENT_APP). - The product’s SPL model, as the working copy
splent_spl_<name>/or in.splent_cache/spls/. Runspl:fetchwhen it is missing.
See also
product:validatechecks the selection against the UVL constraints.db:seedruns the seeders in this order.