feature:pin

Pin all editable features to their latest cached version.


Usage

splent feature:pin [--dry-run]
Option Description
--dry-run Show what would change without modifying pyproject.toml.

Examples

Preview what would be pinned:

splent feature:pin --dry-run

Pin all editables:

splent feature:pin

Example output

  feature:pin

  ✓  admin               → v1.0.1
  ✓  session_redis        → v1.0.1
  ✓  mail                 → v1.3.2

  ✅ Pinned 3 feature(s) in pyproject.toml.
  Run 'splent product:resolve' to update symlinks.

Description

After running feature:release on editable features, this command updates the product’s pyproject.toml to reference the latest version found in .splent_cache/ – turning editable entries into pinned ones.

For each editable feature (no @version) declared in pyproject.toml:

  1. Scans .splent_cache/features/<org>/ for versioned directories matching the feature name.
  2. Sorts by semver and selects the highest version.
  3. Updates the entry from splent-io/splent_feature_name to splent-io/splent_feature_name@vX.Y.Z.

Features that have no cached version are skipped with a warning.

After pinning, run splent product:resolve to update symlinks.


Notes

  • Only looks at the local cache – does not fetch from GitHub. Run feature:release or feature:clone first.
  • Works across all feature lists: features, features_dev, and features_prod.
  • To pin a single feature to a specific version, use feature:attach instead.

Pairs well with

  • feature:release – release features before pinning.
  • feature:attach – pin a specific feature to a specific version.
  • product:resolve – update symlinks after pinning.
  • feature:outdated – check if pinned versions are up to date with GitHub.

Back to top

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