Skip to content

Add beachball config get and config list commands#1190

Merged
ecraig12345 merged 10 commits intomainfrom
beachball-config
Mar 28, 2026
Merged

Add beachball config get and config list commands#1190
ecraig12345 merged 10 commits intomainfrom
beachball-config

Conversation

@ecraig12345
Copy link
Copy Markdown
Member

Summary

Adds beachball config get <name> and beachball config list commands for inspecting the effective beachball configuration.

Currently the intent of these commands is to be read by humans or AI agents, not parsed. The format is similar to YAML, but keys are never quoted, and there's special logic for values such as functions, class instances, and undefined.

Fixes #1185

config get <name>

Gets the value of a specific config setting, including any per-package or per-group overrides. Supports --package to query the effective value for specific packages (accounting for group membership). Note that logged string values will be quoted, which is different from e.g. git config.

$ beachball config get branch
"origin/main"

$ beachball config get disallowedChangeTypes
Main value: null

Group overrides:
  my-group:
    disallowedChangeTypes: ["major"]
    packageNames: ["pkg-a", "pkg-b"]

$ beachball config get disallowedChangeTypes --package pkg-a
pkg-a: ["major"]

config list

Lists all config settings (including defaults), plus any group and per-package overrides, using YAML-like formatting. (Note that keys are not quoted, so it may not be valid YAML.)

$ beachball config list
Main options (including defaults):
  access: "restricted"
  branch: "origin/main"
  bump: true
  ...

Group overrides:
  my-group:
    packageNames: ["pkg-a", "pkg-b"]
    disallowedChangeTypes: ["major"]

Other changes

  • src/logging/formatValue.ts — New YAML-like value formatter with width-aware single-line/multi-line output, used by both commands
  • src/options/getCliOptions.ts — Added _extraPositionalArgs support for subcommand parsing
  • src/help.ts and docs/cli/config.md — Help text and doc site page for both commands
  • .claude/skills/beachball-change-file/SKILL.md — Updated to use beachball config get instead of manually reading config files

Copilot AI and others added 10 commits March 26, 2026 02:05
Implements the `beachball config get <name>` command that displays the
effective value of a specified config setting. For settings that can
be overridden per-package (tag, defaultNpmTag, disallowedChangeTypes,
gitTags, shouldPublish), it shows any package-level overrides.
For disallowedChangeTypes, group overrides are also displayed.

Supports `--package` to get the setting value for specific package(s).

Co-authored-by: ecraig12345 <5864305+ecraig12345@users.noreply.github.com>
Agent-Logs-Url: https://github.com/microsoft/beachball/sessions/c8df7bfa-8b52-461a-aabf-b5e2a0cbd8e7
@ecraig12345 ecraig12345 merged commit 2898ef1 into main Mar 28, 2026
14 checks passed
@ecraig12345 ecraig12345 deleted the beachball-config branch March 28, 2026 02:27
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.

Add beachball config get command

2 participants