| 5623 | const char *canonical_command); |
| 5624 | |
| 5625 | static int cbm_upsert_qwen_lifecycle_hooks(const char *settings_path, const char *binary_path, |
| 5626 | bool windows) { |
| 5627 | char command[CLI_BUF_8K]; |
| 5628 | char released_command[CLI_BUF_8K]; |
| 5629 | char shell[CLI_BUF_32]; |
| 5630 | if (cbm_build_qwen_hook_command(binary_path, windows, command, sizeof(command), shell, |
| 5631 | sizeof(shell)) != CLI_OK || |
| 5632 | (windows ? cbm_build_augment_command_windows(binary_path, released_command, |
| 5633 | sizeof(released_command)) |
| 5634 | : cbm_build_augment_command(binary_path, released_command, |
| 5635 | sizeof(released_command))) != CLI_OK) { |
| 5636 | return CLI_ERR; |
| 5637 | } |
| 5638 | int legacy_result = cbm_remove_paired_lifecycle_hooks_json(settings_path, released_command); |
| 5639 | int lifecycle_result = cbm_upsert_paired_lifecycle_hooks_json(settings_path, command, NULL, |
| 5640 | shell, GEMINI_HOOK_TIMEOUT_MS); |
| 5641 | int read_result = upsert_hooks_json((hooks_upsert_args_t){ |
| 5642 | .settings_path = settings_path, |
| 5643 | .hook_event = "PostToolUse", |
| 5644 | .matcher_str = "ReadFile", |
| 5645 | .command_str = command, |
| 5646 | .shell = shell[0] ? shell : NULL, |
| 5647 | .timeout_value = GEMINI_HOOK_TIMEOUT_MS, |
| 5648 | .match_command_exact = command, |
| 5649 | }); |
| 5650 | return legacy_result == CLI_OK && lifecycle_result == CLI_OK && read_result == CLI_OK ? CLI_OK |
| 5651 | : CLI_ERR; |
| 5652 | } |
| 5653 | |
| 5654 | #ifdef CBM_CLI_ENABLE_TEST_API |
| 5655 | int cbm_upsert_qwen_lifecycle_hooks_for_testing(const char *settings_path, const char *binary_path, |
no test coverage detected