rlsbl.commands.unreleased
Unreleased command: list commits since last tag and check changelog coverage.
Functions
_get_last_tag
def _get_last_tag()
Get the most recent tag. Returns None if no tags exist.
_get_commits_since
def _get_commits_since(tag)
Get commits since the given tag (or all commits if tag is None).
Returns a list of dicts with keys: hash, subject, author, date. Uses NUL as field separator for safe parsing.
_get_unreleased_changelog_text
def _get_unreleased_changelog_text(changelog_path)
Extract changelog text that covers unreleased changes.
Looks for an "## Unreleased" section first, then falls back to the first section in the file (the one above the last released version). Returns the text content or empty string if nothing found.
_extract_keywords
def _extract_keywords(subject)
Extract significant keywords from a commit subject for matching.
Strips conventional-commit prefixes (fix:, feat:, etc.) and common noise words, returns lowercase keywords of length >= 3.
_is_covered
def _is_covered(subject, changelog_text)
Check if a commit subject is covered by changelog text.
Uses keyword matching: if any significant keyword from the subject appears in the changelog text, we consider it covered.
run_cmd
def run_cmd(registry, args, flags)
List unreleased commits and their changelog coverage.
Usage: rlsbl unreleased [--json]