rlsbl v0.113.0 /rlsbl.commands.release.shared
On this page

Shared utilities for release commands: project root detection, git auth verification, working tree guards, and release file loading.

#rlsbl.commands.release.shared

#rlsbl.commands.release.shared

Shared utilities for release commands: project root detection, git auth verification, working tree guards, and release file loading.

#load_release_env

python
def load_release_env(config)

Load the config's env_file into os.environ. THE entry helper.

Every command that can reach a deploy step, a release hook or a local publish pipeline must call this before it does -- release run, release resume, deploy, and the batch orchestrator for its own root-level work. This used to live inline in _run_cmd_inner only, so a release resume re-ran exactly the steps that need those credentials (deploy, post-release hooks) with none of them loaded: the failure the resume existed to fix came back wearing a different error message.

Returns the resolved env_file value, or None when none is configured. A configured-but-absent file raises :class:~rlsbl.errors.ConfigError (see :func:rlsbl.config.load_env_file).

#build_release_flags

python
def build_release_flags(dry_run, quiet, allow_dirty, watch=False, push_timeout=None, ci_timeout=None, check_timeout=None, hook_timeout=None)

Build the standard release flags dict from CLI arguments.

The four timeout entries are the CLI overrides (--push-timeout, --ci-timeout, --check-timeout, --hook-timeout). Each is None when its flag was not passed, in which case the matching config key and then the shipped default win.

#apply_timeout_overrides

python
def apply_timeout_overrides(config, flags)

Write the release invocation's timeout flags into the in-memory config.

--push-timeout and --ci-timeout reach their consumers directly (the executor holds both the flags dict and the config), but --check-timeout and --hook-timeout are consumed by the check framework and the hook runner, which receive only a :class:ProjectContext. Their overrides therefore land on the config dict -- exactly the place every consumer already reads (get_check_timeout / get_hook_timeout), so one mechanism covers built-in checks, external checks, and hooks alike.

A flag that was not passed is None and leaves the config untouched, so the documented precedence (flag > config key > shipped default) holds.

Each value is validated BEFORE it is written, so an invalid flag value is reported against the flag ("Invalid --check-timeout value: -5") instead of resurfacing downstream as "Invalid check_timeout in .rlsbl/config.json" -- a file the operator never touched.

Search