feat(editor): add --touch-tree CI integrity check

Recursively walks a directory, identifies every recognized .w*
file by 4-byte magic, and parses the standard catalog header
(magic + version + length-prefixed name + entryCount) to
confirm the file isn't truncated, corrupted, or otherwise
malformed at the header level. Reports per-file PASS/FAIL +
extension-mismatch warnings (when a file's actual extension
doesn't match what its magic says it should be).

Exits 1 on any FAIL — designed as a CI gate that runs after
content build to catch truncations / write-failures /
disk-full mid-emit. World/asset formats (WOM/WOB/WHM/WOT/WOW)
are recognized by magic but the catalog-header probe is
skipped since their layouts differ.

Implausibility caps: catalog-name length > 1MB or
entryCount > 1M trigger failure as likely corruption signals.
--quiet hides the per-file PASS/FAIL list (summary line only);
--json variant for tooling integration.
This commit is contained in:
Kelsi 2026-05-09 19:58:01 -07:00
parent 104de8ffe6
commit 5fe461cca8
6 changed files with 252 additions and 1 deletions

View file

@ -84,6 +84,7 @@
#include "cli_trade_skills_catalog.hpp"
#include "cli_creature_equipment_catalog.hpp"
#include "cli_item_sets_catalog.hpp"
#include "cli_touch_tree.hpp"
#include "cli_quest_objective.hpp"
#include "cli_quest_reward.hpp"
#include "cli_clone.hpp"
@ -209,6 +210,7 @@ constexpr DispatchFn kDispatchTable[] = {
handleTradeSkillsCatalog,
handleCreatureEquipmentCatalog,
handleItemSetsCatalog,
handleTouchTree,
handleQuestObjective,
handleQuestReward,
handleClone,