Steve Yegge
f91d4fa975
Refactor: Introduce CommandContext to consolidate global variables (bd-qobn)
...
This addresses the code smell of 20+ global variables in main.go by:
1. Creating CommandContext struct in context.go that groups all runtime state:
- Configuration (DBPath, Actor, JSONOutput, etc.)
- Runtime state (Store, DaemonClient, HookRunner, etc.)
- Auto-flush/import state
- Version tracking
- Profiling handles
2. Adding accessor functions (getStore, getActor, getDaemonClient, etc.)
that provide backward-compatible access to the state while allowing
gradual migration to CommandContext.
3. Updating direct_mode.go to demonstrate the migration pattern using
accessor functions instead of direct global access.
4. Adding test isolation helpers (ensureCleanGlobalState, enableTestModeGlobals)
to prevent test interference when multiple tests manipulate global state.
Benefits:
- Reduces global count from 20+ to 1 (cmdCtx)
- Better testability (can inject mock contexts)
- Clearer state ownership (all state in one place)
- Thread safety (mutexes grouped with the data they protect)
Note: Two pre-existing test failures (TestTrackBdVersion_*) are unrelated to
this change and fail both with and without these modifications.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-30 16:29:28 -08:00
..
2025-12-30 14:13:32 -08:00
2025-12-29 15:58:24 -08:00
2025-12-29 21:26:32 -08:00
2025-12-28 20:48:37 -08:00
2025-12-30 14:13:32 -08:00
2025-12-28 16:40:43 -08:00
2025-12-27 16:21:08 -08:00
2025-12-28 01:56:53 -08:00
2025-12-29 21:15:46 -08:00
2025-12-28 16:23:45 -08:00
2025-12-29 12:38:02 -08:00
2025-12-28 10:05:16 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 16:40:43 -08:00
2025-12-28 18:43:09 -08:00
2025-12-30 00:00:25 -08:00
2025-12-30 00:00:25 -08:00
2025-12-29 14:03:39 -08:00
2025-12-30 16:29:28 -08:00
2025-12-25 18:40:15 -08:00
2025-12-29 16:17:51 -08:00
2025-12-27 16:02:15 -08:00
2025-12-30 16:27:59 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 02:11:13 -08:00
2025-12-27 16:02:15 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 10:05:16 -08:00
2025-12-29 14:43:00 -08:00
2025-12-29 14:43:00 -08:00
2025-12-28 10:05:16 -08:00
2025-12-30 00:27:12 -08:00
2025-12-27 16:02:15 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 10:05:16 -08:00
2025-12-28 10:05:16 -08:00
2025-10-20 21:08:49 -07:00
2025-12-27 16:02:15 -08:00
2025-12-28 16:40:43 -08:00
2025-12-27 16:02:15 -08:00
2025-12-29 15:10:59 -08:00
2025-12-30 15:52:33 -08:00
2025-12-28 16:40:43 -08:00
2025-12-30 16:29:28 -08:00
2025-12-13 10:04:01 +11:00
2025-12-29 22:59:48 -08:00
2025-12-28 18:43:09 -08:00
2025-12-29 14:39:43 -08:00
2025-12-28 20:48:37 -08:00
2025-12-28 20:48:37 -08:00
2025-12-28 20:48:37 -08:00
2025-12-30 10:34:41 -08:00
2025-12-28 10:05:16 -08:00
2025-12-29 14:39:43 -08:00
2025-12-25 13:56:19 -08:00
2025-11-07 20:07:59 -08:00
2025-12-28 10:05:16 -08:00
2025-12-30 14:13:32 -08:00
2025-12-28 10:05:16 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 20:48:37 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 20:48:37 -08:00
2025-12-30 14:13:32 -08:00
2025-12-29 14:33:19 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 10:05:16 -08:00
2025-12-22 21:15:41 -08:00
2025-12-30 14:13:32 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 20:48:37 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 18:43:09 -08:00
2025-12-29 14:52:29 -08:00
2025-12-29 12:34:57 -08:00
2025-12-28 10:05:16 -08:00
2025-12-30 16:07:31 -08:00
2025-12-30 16:07:31 -08:00
2025-12-28 10:05:16 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 18:43:09 -08:00
2025-12-27 16:02:15 -08:00
2025-12-30 16:04:39 -08:00
2025-12-30 14:13:32 -08:00
2025-12-30 14:13:32 -08:00
2025-12-28 18:43:09 -08:00
2025-12-28 18:43:09 -08:00
2025-12-30 16:29:28 -08:00
2025-12-30 00:06:42 -08:00
2025-12-30 00:06:42 -08:00
2025-12-30 14:13:32 -08:00
2025-12-30 00:06:42 -08:00
2025-12-30 00:06:42 -08:00
2025-12-30 00:40:16 -08:00
2025-12-29 17:10:26 -08:00
2025-12-27 16:02:15 -08:00
2025-12-29 16:17:51 -08:00
2025-12-30 14:13:32 -08:00
2025-12-30 06:59:51 -08:00
2025-12-27 16:02:15 -08:00
2025-12-27 16:02:15 -08:00
2025-12-30 16:29:28 -08:00
2025-12-28 10:05:16 -08:00
2025-12-29 14:17:44 -08:00
2025-12-29 14:17:44 -08:00
2025-12-29 16:17:51 -08:00
2025-12-27 21:33:01 -08:00
2025-12-28 19:52:51 -08:00
2025-12-27 16:02:15 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 16:40:43 -08:00
2025-12-27 22:24:19 -08:00
2025-12-27 22:24:19 -08:00
2025-12-29 12:43:22 -08:00
2025-12-29 13:16:47 -08:00
2025-12-27 16:21:08 -08:00
2025-12-27 16:02:15 -08:00
2025-11-21 19:32:45 -05:00
2025-12-24 00:06:41 -08:00
2025-12-28 18:43:09 -08:00
2025-12-27 16:02:15 -08:00
2025-12-30 16:00:22 -08:00
2025-12-30 15:52:33 -08:00
2025-12-28 10:05:16 -08:00
2025-12-30 15:57:08 -08:00
2025-12-30 15:57:08 -08:00
2025-12-29 14:39:43 -08:00
2025-12-25 12:05:46 -08:00
2025-12-28 10:05:16 -08:00
2025-12-28 10:05:16 -08:00
2025-12-29 15:58:24 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 10:05:16 -08:00
2025-12-30 16:05:15 -08:00
2025-12-28 18:43:09 -08:00
2025-12-24 23:33:34 -08:00
2025-12-29 16:17:51 -08:00
2025-12-28 20:48:37 -08:00
2025-12-30 16:29:28 -08:00
2025-12-30 16:29:28 -08:00
2025-12-27 16:02:15 -08:00
2025-12-27 16:08:34 -08:00
2025-12-27 16:02:15 -08:00
2025-12-27 16:02:15 -08:00
2025-12-28 18:43:09 -08:00
2025-12-30 16:29:28 -08:00
2025-12-30 16:29:28 -08:00
2025-12-28 10:05:16 -08:00
2025-12-29 16:34:14 -08:00
2025-12-27 21:27:44 -08:00
2025-12-29 16:17:51 -08:00
2025-12-29 14:39:43 -08:00
2025-12-27 16:02:15 -08:00