fix(installer): close --tools "" bypass and drop hardcoded tool count

- Replace truthy `if (options.tools)` guard with `!== undefined` in both
  upgrade and fresh-install branches. Empty string now reaches
  _parseToolsFlag and produces the specific "passed empty" error
  instead of falling through to a generic message (fresh-install) or
  being silently ignored (existing-install).
- Drop the hardcoded "42 supported tools" count from the prereqs in
  install-bmad.md so the doc doesn't drift as platform-codes.yaml
  changes.

Addresses augment / coderabbit review on #2346.
This commit is contained in:
Brian Madison 2026-04-27 22:53:50 -05:00
parent bbdefb4269
commit 9962f3ca0d
2 changed files with 7 additions and 4 deletions

View File

@ -18,7 +18,7 @@ Use `npx bmad-method install` to set up BMad in your project. One command handle
- **Node.js** 20+ (the installer requires it)
- **Git** (for cloning external modules)
- **An AI tool** such as Claude Code or Cursor (run `npx bmad-method install --list-tools` to see all 42 supported tools)
- **An AI tool** such as Claude Code or Cursor (run `npx bmad-method install --list-tools` to see all supported tools)
:::

View File

@ -469,7 +469,9 @@ class UI {
const allTools = [...preferredIdes, ...otherIdes];
// Non-interactive: handle --tools and --yes flags before interactive prompt
if (options.tools) {
// Use !== undefined so an explicit --tools "" falls through to _parseToolsFlag and
// gets a specific "passed empty" error instead of being silently ignored.
if (options.tools !== undefined) {
const selectedIdes = this._parseToolsFlag(options.tools, allKnownValues);
await prompts.log.info(`Using tools from command-line: ${selectedIdes.join(', ')}`);
await this.displaySelectedTools(selectedIdes, preferredIdes, allTools);
@ -546,8 +548,9 @@ class UI {
let selectedIdes = [];
// Check if tools are provided via command-line
if (options.tools) {
// Check if tools are provided via command-line.
// Use !== undefined so an explicit --tools "" still hits _parseToolsFlag's empty-value error.
if (options.tools !== undefined) {
selectedIdes = this._parseToolsFlag(options.tools, allKnownValues);
await prompts.log.info(`Using tools from command-line: ${selectedIdes.join(', ')}`);
await this.displaySelectedTools(selectedIdes, preferredIdes, allTools);