marketplace:index
Build the marketplace index from feature contracts and the SPL catalog.
Usage
splent marketplace:index [--org ORG]... [--repo ORG/REPO]... [--registry FILE] [--local] [--output PATH] [--no-pypi]
| Option | Description |
|---|---|
--org |
GitHub organisation to index. Repeatable. Defaults to splent-io. |
--repo |
Extra org/repo to index explicitly (third-party features outside the orgs). Repeatable. |
--registry |
Path to a registry.toml listing curated orgs/repos to index. |
--local |
Index the editable features in the workspace instead of GitHub. No network needed. |
--output |
Write the index to this path. Defaults to .splent_cache/marketplace/index.json. |
--no-pypi |
Skip the PyPI publication check (faster). |
Examples
Index the default org from GitHub:
splent marketplace:index
Index the workspace offline (instant, great during development):
splent marketplace:index --local
Build the published index in CI from a curated source list:
splent marketplace:index --registry registry.toml --output ./public/index.json
How it works
For every splent_feature_* repo reachable from the sources, the command
resolves the latest semver tag, downloads pyproject.toml at that tag,
and turns [tool.splent.contract] into an index entry. Repos without a
released tag are reported and skipped — releasing (feature:release) is
what publishes a feature. The SPLs in splent_catalog are parsed
(mandatory/optional, alternative groups, constraints) so index consumers
can reason about variability. Finally it computes used_by (reverse
dependencies) and collisions (features providing the same
route/service/model).
The registry file passed to --registry is plain TOML:
[registry]
orgs = ["splent-io"]
repos = ["some-org/splent_feature_billing"]
Third-party authors get listed by adding their line here through a reviewed pull request; the marketplace never accepts pushed data.
Consumers
feature:search and feature:info read the local index automatically.
Products of the marketplace web app serve the same file. Set
SPLENT_INDEX_URL to make every workspace consume a published index
without building it locally.