Skip to content

comline release; builds show the release they lead to - #90

Merged
Kinflou merged 2 commits into
mainfrom
feat/release
Oct 20, 2026
Merged

Kinflou merged 2 commits into
mainfrom
feat/release

Conversation

@Kinflou

@Kinflou Kinflou commented Oct 20, 2026

Copy link
Copy Markdown
Member

The CLI half of ComlineProject/core#133 (core#122 / cli#82, decided in docs#64).

  • comline release builds first, so what's released is what's in src/, then creates the version from the highest bump since the last release. It prints the changes behind it, the bump, and any reason. If nothing calls for a bump, it refuses unless the bump is raised.

  • --raise patch|minor|major --reason "…" releases a higher bump. The reason is required and recorded. Raising to major asks first. A raise the changes already reach is reported as covered.

  • comline release 1.0 says what 1.0 commits to:

    • from then on a breaking change is a major release;
    • the package's protocols and their handshakes;
    • things worth settling first, for information only: given-up guarantees and deprecated declarations.

    Then it asks. Any other version is refused, because versions come from the changes.

  • Confirmation follows comline accept's pattern: ask on a terminal (default no); otherwise exit 2 unless --yes.

  • comline build reports initial build 0.1.0-dev.1 and a next release: 0.1.1 (new features since 0.1.0) — run comline release`` line.

  • package_versions = "all" now generates every release, not every build. A list can still name builds.

Not here, by decision: --lower (its consumer acceptance isn't designed) and assigning @id at 1.0 (core#127). build --release stays the reserved no-op it was; its name now reads oddly beside comline release, so it's worth a decision whether to drop it.

Tests:

  • tests/cli/release.rs covers releasing, nothing to release, raising (reason, confirmation, covered), and 1.0 (refused without confirmation, then once only, and release 2.0 refused).
  • The existing tests use the new versions, and the multi-version generate tests now release twice.
  • I drove the 1.0 prompt by hand through a pseudo-terminal: n releases nothing, y releases 1.0.0.

113 tests pass. Merge after the core PR and generation.

- comline release builds first, then releases: the highest bump since the
  last release, --raise LEVEL --reason to go higher (major asks first),
  release 1.0 to make a 0.x package stable after saying what that commits
  to (protocols and their handshakes; given-up guarantees and deprecated
  declarations as things worth settling first). Asks on a terminal,
  --yes otherwise.
- comline build shows the next release and what calls for it.
- package_versions = "all" generates every release, not every build.
- Core af0371f (builds and releases) and the generators pinning it.
@Kinflou
Kinflou merged commit 1bcf78a into main Oct 20, 2026
2 checks passed
@Kinflou
Kinflou deleted the feat/release branch October 20, 2026 09:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant