product:auto-require

Introduction

product:auto-require adds to your pyproject.toml the features the UVL model requires and your product does not declare. It follows the A => B constraints all the way down. It needs a selected product (SPLENT_APP).

splent product:auto-require --dry-run
UVL complete
Product  : my_shop
UVL      : /workspace/splent_spl_shop/shop_spl.uvl
Features : 12

Missing features (by name):
- billing

Will add to pyproject [tool.splent].features
- splent-io/splent_feature_billing

Dry-run (use --yes or confirm prompt to modify pyproject.toml).

product:missing shows the same gaps without writing anything.


Adding the features

splent product:auto-require --yes

Without --yes it asks first. It backs up pyproject.toml.bak and appends each entry to [tool.splent].features as org/package, from the org and package of the model, with no version. Pin it later with feature:attach.

Only those entries change. Comments, blank lines, key order and quote style stay as they were. When the edit cannot be made exactly, it writes nothing, prints <path> was left as it was, because <reason> and exits 1.

Once it has added features, it brings the product’s forge workflows in step, as product:sync-template --ci would.


What it adds and what it does not

It reads the selection product:validate checks, [tool.splent].features plus features_dev or features_prod for the current SPLENT_ENV (dev when unset). The nodes your parameter values select count as selected too.

A feature already declared in features, features_dev or features_prod, pinned or not, is never added again.

Not added: <name> is already declared in <list>.
No changes needed (entries already present).

A parameter node a constraint asks for has no package, so it is never added. The command names the value to set instead.

Not added, values to set in [tool.splent.config]: CAPTCHA_PROTECTED_FORMS includes login

Where the model comes from

It reads the model of your product’s SPL from the working copy splent_spl_<name>/, then from .splent_cache/spls/, and otherwise downloads it from UVLHub by the DOI in [tool.splent.spl_model]. A product without [tool.splent].spl reads <product>/uvl/<file> from [tool.splent.uvl].file.


Reference

Option Description
--pyproject PATH Edit this pyproject.toml instead of the product’s
--yes Write without asking
--dry-run Show what would be added and write nothing
--default-org ORG Accepted and ignored. Entries are always org/package

Back to top

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