| 1034 | } |
| 1035 | |
| 1036 | static int handle_subcommand(int argc, char **argv, cbm_project_lock_manager_t *project_locks, |
| 1037 | main_local_maintenance_context_t *maintenance_context) { |
| 1038 | /* First scan: global flags */ |
| 1039 | for (int i = SKIP_ONE; i < argc; i++) { |
| 1040 | if (strcmp(argv[i], "--profile") == 0) { |
| 1041 | cbm_profile_enable(); |
| 1042 | } |
| 1043 | } |
| 1044 | for (int i = SKIP_ONE; i < argc; i++) { |
| 1045 | if (strcmp(argv[i], "--version") == 0) { |
| 1046 | printf("codebase-memory-mcp %s\n", CBM_VERSION); |
| 1047 | return 0; |
| 1048 | } |
| 1049 | if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { |
| 1050 | print_help(); |
| 1051 | return 0; |
| 1052 | } |
| 1053 | if (strcmp(argv[i], "allow-root") == 0) { |
| 1054 | return main_run_allow_root(argc - i - SKIP_ONE, argv + i + SKIP_ONE); |
| 1055 | } |
| 1056 | if (strcmp(argv[i], "cli") == 0) { |
| 1057 | cbm_mem_init_with_cap(cbm_mem_ram_fraction_for_total(cbm_system_info().total_ram), |
| 1058 | cbm_index_worker_memory_budget_bytes()); |
| 1059 | return run_cli(argc - i - SKIP_ONE, argv + i + SKIP_ONE, project_locks, |
| 1060 | maintenance_context); |
| 1061 | } |
| 1062 | if (strcmp(argv[i], "hook-augment") == 0) { |
| 1063 | cbm_mem_init(cbm_mem_ram_fraction_for_total(cbm_system_info().total_ram)); |
| 1064 | return cbm_cmd_hook_augment(argc - i - SKIP_ONE, argv + i + SKIP_ONE); |
| 1065 | } |
| 1066 | if (strcmp(argv[i], "install") == 0) { |
| 1067 | return cbm_cmd_install(argc - i - SKIP_ONE, argv + i + SKIP_ONE); |
| 1068 | } |
| 1069 | if (strcmp(argv[i], "uninstall") == 0) { |
| 1070 | return cbm_cmd_uninstall(argc - i - SKIP_ONE, argv + i + SKIP_ONE); |
| 1071 | } |
| 1072 | if (strcmp(argv[i], "update") == 0) { |
| 1073 | return cbm_cmd_update(argc - i - SKIP_ONE, argv + i + SKIP_ONE); |
| 1074 | } |
| 1075 | if (strcmp(argv[i], "config") == 0) { |
| 1076 | return cbm_cmd_config(argc - i - SKIP_ONE, argv + i + SKIP_ONE); |
| 1077 | } |
| 1078 | } |
| 1079 | return CBM_NOT_FOUND; |
| 1080 | } |
| 1081 | |
| 1082 | /* Parse --ui= and --port= into a per-field daemon mutation. */ |
| 1083 | static uint8_t parse_ui_flags(int argc, char **argv, bool *ui_enabled, int *ui_port, |
no test coverage detected