spl:create
Introduction
spl:create starts a new product line. It creates a working copy at the workspace root, next to your features, with a minimal UVL model you then grow with spl:add-feature.
splent spl:create my_spl
SPL 'my_spl' created at /workspace/splent_spl_my
Model /workspace/splent_spl_my/my_spl.uvl
Publish it with: splent spl:publish my_spl
The trailing _spl is dropped from the directory, so my_spl lives in splent_spl_my/. The working copy is yours and can be its own git repository.
What it creates
| File | Contents |
|---|---|
my_spl.uvl |
The root feature alone, the smallest model UVL accepts |
metadata.toml |
The name, an empty description, and the mirror and file with an empty DOI, concept DOI and version |
.gitignore |
*.uvl.bak, the backups the editing commands leave |
features
my_spl
The model has no DOI yet, and everything works without one. spl:publish records it the first time you publish.
Changing a line that is already published
SPL 'sample_splent_spl' is already published (DOI 10.5281/zenodo.23076870).
To change it, download it and edit it in a working copy with splent spl:fetch sample_splent_spl and then splent spl:add-feature sample_splent_spl <feature>.
An empty working copy would win over the published model for every product of the line, so spl:create refuses a name that already has a DOI. Fetch the model and edit it instead. The first edit copies it into a working copy for you.
Reference
Naming
The name is the directory, the model’s root feature and its file name. It must match [a-z_][a-z0-9_]* and must not be a UVL keyword (namespace, features, imports, include, constraints, as, mandatory, optional, alternative, or, cardinality, true, false).
Errors
Each one exits 1 and creates nothing.
| Message | What to do |
|---|---|
'<name>' is not a valid SPL name. ... |
Use lowercase letters, digits and underscores |
SPL '<name>' already exists at <path> |
The working copy is there already. Edit it |
SPL '<name>' is already published (DOI ...) |
Fetch it and edit it, as shown above |
Requirements
- Detached mode, with no product selected. A leading
SPLENT_APP=runs one command detached and keeps your selection.
See also
spl:add-featuregrows the model.spl:publishpublishes it and gets a DOI.- Where a model lives.