| 5787 | const char *canonical_command); |
| 5788 | |
| 5789 | static int cbm_upsert_qwen_lifecycle_hooks(const char *settings_path, const char *binary_path, |
| 5790 | bool windows) { |
| 5791 | char command[CLI_BUF_8K]; |
| 5792 | char released_command[CLI_BUF_8K]; |
| 5793 | char shell[CLI_BUF_32]; |
| 5794 | if (cbm_build_qwen_hook_command(binary_path, windows, command, sizeof(command), shell, |
| 5795 | sizeof(shell)) != CLI_OK || |
| 5796 | (windows ? cbm_build_augment_command_windows(binary_path, released_command, |
| 5797 | sizeof(released_command)) |
| 5798 | : cbm_build_augment_command(binary_path, released_command, |
| 5799 | sizeof(released_command))) != CLI_OK) { |
| 5800 | return CLI_ERR; |
| 5801 | } |
| 5802 | int legacy_result = cbm_remove_paired_lifecycle_hooks_json(settings_path, released_command); |
| 5803 | int lifecycle_result = cbm_upsert_paired_lifecycle_hooks_json(settings_path, command, NULL, |
| 5804 | shell, GEMINI_HOOK_TIMEOUT_MS); |
| 5805 | int read_result = upsert_hooks_json((hooks_upsert_args_t){ |
| 5806 | .settings_path = settings_path, |
| 5807 | .hook_event = "PostToolUse", |
| 5808 | .matcher_str = "ReadFile", |
| 5809 | .command_str = command, |
| 5810 | .shell = shell[0] ? shell : NULL, |
| 5811 | .timeout_value = GEMINI_HOOK_TIMEOUT_MS, |
| 5812 | .match_command_exact = command, |
| 5813 | }); |
| 5814 | return legacy_result == CLI_OK && lifecycle_result == CLI_OK && read_result == CLI_OK ? CLI_OK |
| 5815 | : CLI_ERR; |
| 5816 | } |
| 5817 | |
| 5818 | #ifdef CBM_CLI_ENABLE_TEST_API |
| 5819 | int cbm_upsert_qwen_lifecycle_hooks_for_testing(const char *settings_path, const char *binary_path, |
no test coverage detected