Skip to content

chore(cli): route fbuild-cli through fbuild-paths; document the clap exception - #1393

Merged
zackees merged 1 commit into
mainfrom
chore/1349-ratchet-batch5
Aug 24, 2026
Merged

chore(cli): route fbuild-cli through fbuild-paths; document the clap exception#1393
zackees merged 1 commit into
mainfrom
chore/1349-ratchet-batch5

Conversation

@zackees

@zackees zackees commented Aug 23, 2026

Copy link
Copy Markdown
Member

Fifth ratchet batch for #1349. Allowlist 28 → 20, and fbuild-cli is down
to one entry that cannot be removed by editing code.

Eight files sanitized

IDE state path and its two fixtures, the dev-mode and --build-dir notices,
the purge usage line, the symbols ELF-search diagnostic and its fixture,
lib_select's skip-list arm, the debug / ide-debug ELF fixtures, and the
crash-recovery test's lock path.

Two of these stop being cosmetic:

cli/args.rs moves to the sanctioned section, not the baseline

It is not a hand-written literal. #[derive(Subcommand)] stringifies the ///
help text into &str literals whose source_callsite() is the derive item, so
the finding lands on the file as a whole and no expression edit can clear
it
. The only way to remove it is deleting
.fbuild/build/**/firmware.elf from help a user actually reads — degrading
documentation to satisfy a lint.

Verified rather than assumed: removing the allowlist line makes the lint fire
at args.rs:121, which is the #[derive(Subcommand)] itself. That is exactly
the macro case the lint's own "Known problems" section calls out, so it is a
documented exception rather than debt.

I moved it above the baseline marker with that rationale inline, so "the
allowlist reaches zero" stays an honest goal — the remaining entries are
things that can be fixed.

Verification

  • dylint --lib ban_raw_fbuild_path -- --workspace --all-targets: 0 findings
  • soldr cargo test -p fbuild-cli --bins: 305 passed
  • clippy -D warnings: clean
  • Lint crate 0.1.4 → 0.1.5 so the cached .so is rebuilt against the shrunk
    list (checked against main's version, not against my own starting point —
    that bump was a silent no-op last batch)

Remaining

20 entries: fbuild-build 12, fbuild-build-engine 5 (test fixtures), plus the 3
sanctioned sites (fbuild-paths/lib.rs, fbuild-core/path.rs,
fbuild-cli/args.rs). So 17 removable.

…exception

Fifth ratchet batch for #1349. Allowlist 28 -> 20, and
`fbuild-cli` is down to one entry that cannot be removed by editing code.

Eight files sanitized: IDE state path and its two fixtures, the dev-mode and
`--build-dir` notices, the purge usage line, the symbols ELF-search
diagnostic and its fixture, `lib_select`'s skip-list arm, the debug/ide-debug
ELF fixtures, and the crash-recovery test's lock path.

Two of these stop being merely cosmetic. The dev-mode notice hardcoded
`port 8865, ~/.fbuild/dev/`; it now prints `get_daemon_port()` and
`get_fbuild_root()`, and the port has not been a fixed 8865 since
#1009 made it version- and identity-derived. The symbols
"no ELF found" diagnostic listed the directories it searched, spelled by
hand — a list that can drift from the search it describes.

## `cli/args.rs` moves to the sanctioned section rather than the baseline

It is not a hand-written literal. `#[derive(Subcommand)]` stringifies the
`///` help text into `&str` literals whose `source_callsite()` is the derive
item, so the finding lands on the file as a whole and no expression edit can
clear it. The only alternative is deleting `.fbuild/build/**/firmware.elf`
from help a user reads, which degrades the documentation to satisfy a lint.

Verified rather than assumed: removing the line makes the lint fire at
`args.rs:121`, which is the `#[derive(Subcommand)]` — exactly the macro case
the lint's own docs call out.

Lint crate bumped 0.1.4 -> 0.1.5 so the cached `.so` is rebuilt against the
shrunk list.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 43 minutes.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 9eb8caa4-bf8e-494b-ae2b-4c5a7a4e85fe

📥 Commits

Reviewing files that changed from the base of the PR and between 0767fb6 and 4b79655.

📒 Files selected for processing (10)
  • crates/fbuild-cli/src/cli/debug.rs
  • crates/fbuild-cli/src/cli/dispatch.rs
  • crates/fbuild-cli/src/cli/ide.rs
  • crates/fbuild-cli/src/cli/ide_debug.rs
  • crates/fbuild-cli/src/cli/purge.rs
  • crates/fbuild-cli/src/cli/symbols_cmd.rs
  • crates/fbuild-cli/src/lib_select.rs
  • crates/fbuild-cli/tests/daemon_crash_recovery.rs
  • dylints/ban_raw_fbuild_path/Cargo.toml
  • dylints/ban_raw_fbuild_path/src/allowlist.txt

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@zackees
zackees merged commit cf5a3fe into main Aug 24, 2026
98 checks passed
@zackees
zackees deleted the chore/1349-ratchet-batch5 branch August 24, 2026 00:16
@fastled-project-sync fastled-project-sync Bot moved this to Triage in FastLED Tracker Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Triage

Development

Successfully merging this pull request may close these issues.

1 participant