On this page
Yank command for registry-level removal of a published version, probing each configured target and executing registry-specific yank actions.
#rlsbl.commands.yank
#rlsbl.commands.yank
Yank command for registry-level removal of a published version, probing each configured target and executing registry-specific yank actions.
For each configured target, probes the registry to determine publication status, then executes the registry-specific yank action:
- npm:
npm deprecate - Go: retract directive + tag deletion
- PyPI: human-in-the-loop checklist (no yank API)
Also sets the GitHub pre-release flag and adds a yank notice to the release.
#run_cmd
def run_cmd(args, flags, project_root)Yank a version from registries and mark the GitHub Release.
For each configured target:
- PUBLISHED: execute registry-specific yank
- UNPUBLISHED: skip with a message
- UNPROBEABLE: hard error
Args:
args: Positional args; first element is the version to yank.flags: dict with keysdry-run,reason,use. There is no
confirmation key: release yank declares itself consequential, so the framework owns the prompt and --approve-consequential.
project_root: Path to the project root directory, or None for cwd.
#_yank_target
def _yank_target(target, target_dir, version, tag, reason, dry_run)Execute the target's own registry-removal action and print its outcome.
target_dir is the directory this target was detected in, not the project root: the two differ for a target declared with a path, and the yank action reads that target's manifest.
The dispatch is the target protocol: every target answers yank(), and a target with no registry-removal action answers UNSUPPORTED naming itself. There is no name comparison here and no fallthrough that could pass over a target in silence.
#_mark_github_release
def _mark_github_release(tag, reason, use, dry_run)Mark GitHub release as pre-release with a yank notice.
#_build_yank_notice
def _build_yank_notice(reason, use)Build the yank notice string for the GitHub release body.