rlsbl v0.51.0 /Configuration reference
On this page

Configuration reference for rlsbl: config.json settings, workspace.toml for monorepos, and selfdoc.json for documentation.

#Configuration reference

#.rlsbl/config.json

Project-level configuration file created by rlsbl config init or rlsbl scaffold. This JSON file controls release behavior such as which targets to use (chosen from 14 supported registries) and whether ecosystem tagging is enabled. Settings here override user-level defaults in ~/.rlsbl/config.json but are themselves overridden by CLI flags passed at release time, forming a 3-layer precedence chain (CLI > project > user).

.rlsbl/config.json
KeyTypeValue
privatebooleanfalse
env_filestring"~/Projects/.env"
push_timeoutinteger120
batch_limitsobject{...} (1 keys)
targetsarray[...] (3 items)

#Key reference

Key reference
KeyTypeDescription
targetsarrayList of target names to use (overrides auto-detection)
tagboolEnable/disable ecosystem tagging (default: true)

Configuration precedence for tagging: CLI flag (--no-tag) > project config > user config (~/.rlsbl/config.json) > default (true).

#rlsbl.config

Project configuration loading with layered precedence: CLI flags override project-level .rlsbl/config.json which overrides user-level defaults.

#load_env_file

python
def load_env_file(path)

Load KEY=VALUE pairs from a file into os.environ.

Supports ~ expansion. Ignores comments (#) and blank lines. Strips surrounding quotes from values.

#_project_config

python
def _project_config(project_root)

Resolve project config path at call time.

Returns an absolute path based on project_root.

#read_json_config

python
def read_json_config(path)

Safely read a JSON file, returning {} on missing.

#should_tag

python
def should_tag(flags, config)

Returns True if tagging is enabled, checking flag > project > user > default.

config is the project config dict (already loaded). User-level config is still read from disk.

#read_project_config

python
def read_project_config(project_root)

Read .rlsbl/config.json, return dict or empty dict if missing/malformed.

#read_deploy_config

python
def read_deploy_config(config)

Read and validate deploy targets from project config dict. Returns (targets, errors).

#get_publish_config

python
def get_publish_config(target_name, config)

Read per-target publish config from a project config dict.

Returns a dict like {"local": True, "token_var": "PYPI_TOKEN"}. Returns empty dict if no config exists for this target.

#validate_publish_config

python
def validate_publish_config(config, target_name)

Validate per-target publish config, especially the assets schema.

Raises ValueError if:

  • assets is true but max_asset_size_mb is missing.
  • max_asset_size_mb is present but not a positive integer.

#get_changelog_validation_config

python
def get_changelog_validation_config(config)

Read changelog validation config from a project config dict.

Returns the batch_limits section as a dict like {"max_commits_per_entry": 5, "max_entries_per_commit": 2, "exclusions": [{"reason": "...", "commits": [...], "entries": [{"version": "...", "line": N}]}]}.

Each exclusion object has a required "reason" string for audit purposes; "commits" and "entries" are optional lists silencing the corresponding batch_size_commits and batch_size_entries violations.

Returns an empty dict if no config or malformed.

#write_project_config

python
def write_project_config(key, value, project_root)

Write or update a key in .rlsbl/config.json (creates dir if needed).

Returns the updated config dict after writing to disk.

#.rlsbl-monorepo/workspace.toml

Monorepo workspace definition that lists all sub-projects, their relative paths, and optional names. rlsbl walks up from the current directory to find this file, so you can run release commands from within any sub-project. See the monorepo guide for setup instructions, workspace commands, and subtree publishing.

The file uses TOML format with a [[projects]] array. Each entry has a path key (relative to the monorepo root) and an optional name key. If name is omitted, the directory basename is used.

#selfdoc.json

When present in the project root, this file enables the docs release target and configures documentation builds. It specifies the source directories to scan, the output path for generated pages, the base URL for the published site, and an optional deploy provider such as Cloudflare Pages. See the selfdoc documentation for the full schema.

selfdoc.json
KeyTypeValue
base_urlstring"https://rlsbl.smmh.dev"
languagestring"python"
sourcearray[...] (1 items)
docsstring"docs/"
outputstring"docs/_build/"
localesarray[...] (1 items)
deployobject{...} (2 keys)
root_filesarray[...] (2 items)