feature:release

Release a feature: bump version, tag, publish to GitHub and PyPI, and create a versioned cache snapshot.


Usage

splent feature:release <feature_ref> <version> [--attach]

Examples

Release and publish:

splent feature:release splent_io/notepad v1.3.0

Release and automatically attach to the current product:

splent feature:release splent_io/notepad v1.3.0 --attach

Description

This command performs a full release pipeline for a feature:

  1. Updates the version in pyproject.toml.
  2. Commits and pushes changes (if needed).
  3. Creates and pushes a Git tag.
  4. Creates a GitHub Release.
  5. Builds and uploads the package to PyPI.
  6. Creates a versioned snapshot in .splent_cache.
  7. Optionally attaches the released version to the active product.

The active product is determined by SPLENT_APP.


Requirements

Environment variables required:

  • SPLENT_APP
  • TWINE_USERNAME or PYPI_USERNAME
  • TWINE_PASSWORD or PYPI_PASSWORD

Optional:

  • GITHUB_TOKEN (required for automatic GitHub Release)

Result

After a successful release:

  • A Git tag is pushed.
  • A GitHub Release is created.
  • The package is published to PyPI.
  • A versioned snapshot exists in:
<workspace>/.splent_cache/features/<namespace>/<feature_name>@<version>/

If --attach is used, the feature version is also linked to the current product.


Notes

  • The feature must be in editable (non-versioned) state in the cache.
  • Versioned references (e.g., feature@v1.0.0) cannot be released.