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:xray shows who refines whom.

Without a UVL model the order is the pyproject.toml order, with each refiner moved after its base, and --reverse stops 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/. Run spl:fetch when it is missing.

See also


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es