SPL commands
Commands for creating, querying and maintaining Software Product Line definitions, and for the UVL variability model each one carries.
| Command | Description |
|---|---|
| spl:create | Start a new SPL model at splent_spl_<name>/ |
| spl:list | List the models this workspace knows |
| spl:info | Show where one model lives and what points at it |
| spl:features | List features in an SPL |
| spl:add-feature | Add a feature with auto-detected constraints |
| spl:add-constraints | Add missing constraints interactively |
| spl:deps | Show feature dependencies |
| spl:configurations | Count valid configurations |
| spl:compare | Compare two products by feature set |
| spl:fetch | Download a model from UVLHub by DOI |
| spl:publish | Publish a model through the marketplace |
| spl:pin | Record the model DOI in the active product |
| spl:outdated | Report products pinned to an older model |
| spl:migrate-catalog | One off, adopt a legacy splent_catalog |
Where a model lives
There is no catalog repository any more. Three places hold a model, and they are tried in this order.
- The working copy,
splent_spl_<name>/. Your own repository, the mirror image ofsplent_feature_<name>/. This is where a model is edited and where a model that has never been published lives. Nothing ever overwrites it. - The cache,
.splent_cache/spls/<name>@<version or DOI>/. Derived data, mirroring.splent_cache/features/<org>/<feature>@<version>. Deleting it costs one download and nothing else. The leaf is keyed on the version when the pin records one and on the DOI otherwise, never on the name alone, so two products pinning two versions never share a directory. - UVLHub, by DOI. Whatever comes down is written into the cache, so the next resolution and every one after it works offline.
The name alone cannot be turned into a download, so the product records
the DOI next to it in its own pyproject.toml under
[tool.splent.spl_model]. See spl:pin. With that,
deriving a product needs the product’s own repository and UVLHub, and
never the marketplace.
Reading and writing are not symmetric
| Direction | Who it goes through | What you need |
|---|---|---|
Reading, spl:fetch |
UVLHub directly, by DOI | Nothing. No account |
Writing, spl:publish |
The marketplace, which holds the only UVLHub key | splent login |
You never generate a UVLHub API key.