feat(editor): add --catalog-grep search-by-name across content tree

Recursively walks a directory, parses the standard catalog
header (magic + version + name + entryCount) of every
recognized catalog format, and reports files whose internal
catalog NAME field matches a pattern. Useful when you've
got a content bundle and need to find "where is the catalog
named WintergraspUI?" or "list every Starter* preset in
this directory" without per-format parsing.

Case-insensitive substring match by default (--case-sensitive
opts in to literal match). Returns exit 1 when no match —
designed for shell composition (`if catalog-grep ... ; then ...`).
World/asset formats (.wom/.wob/.whm/.wot/.wow) are skipped
since they don't follow the catalog-header layout.

Supports --json variant for tooling integration. Reuses
cli_format_table.cpp so any new catalog format is searchable
automatically.
This commit is contained in:
Kelsi 2026-05-09 20:27:16 -07:00
parent b8e039f834
commit 34c7021e5c
6 changed files with 185 additions and 0 deletions

View file

@ -92,6 +92,7 @@
#include "cli_tree_summary_md.hpp"
#include "cli_spell_schools_catalog.hpp"
#include "cli_lfg_catalog.hpp"
#include "cli_catalog_grep.hpp"
#include "cli_quest_objective.hpp"
#include "cli_quest_reward.hpp"
#include "cli_clone.hpp"
@ -225,6 +226,7 @@ constexpr DispatchFn kDispatchTable[] = {
handleTreeSummaryMd,
handleSpellSchoolsCatalog,
handleLFGCatalog,
handleCatalogGrep,
handleQuestObjective,
handleQuestReward,
handleClone,