MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / cbm_cmd_config

Function cbm_cmd_config

src/cli/cli.c:6672–6789  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6670}
6671
6672int cbm_cmd_config(int argc, char **argv) {
6673 /* NULL argv with a nonzero argc previously slipped past this guard (the
6674 * inner `argv &&` shielded only the help comparison) and dereferenced
6675 * argv[0] below -- caught by the clang-analyzer lane. */
6676 if (argc == 0 || !argv || strcmp(argv[0], "--help") == 0 || strcmp(argv[0], "-h") == 0) {
6677 printf("Usage: codebase-memory-mcp config <command> [args]\n\n");
6678 printf("Commands:\n");
6679 printf(" list Show all config values\n");
6680 printf(" get <key> Get a config value\n");
6681 printf(" set <key> <val> Set a config value\n");
6682 printf(" reset <key> Reset a key to default\n\n");
6683 printf("Config keys:\n");
6684 for (size_t i = 0; i < sizeof(CONFIG_KEYS) / sizeof(CONFIG_KEYS[0]); i++) {
6685 printf(" %-25s default=%-10s %s\n", CONFIG_KEYS[i].key, CONFIG_KEYS[i].default_value,
6686 CONFIG_KEYS[i].help);
6687 }
6688 return 0;
6689 }
6690
6691 const char *home = cbm_get_home_dir();
6692 if (!home) {
6693 (void)fprintf(stderr, "error: HOME not set (use USERPROFILE on Windows)\n");
6694 return CLI_TRUE;
6695 }
6696
6697 char cache_dir[CLI_BUF_1K];
6698 snprintf(cache_dir, sizeof(cache_dir), "%s", cbm_resolve_cache_dir());
6699
6700 cbm_config_t *cfg = cbm_config_open(cache_dir);
6701 if (!cfg) {
6702 (void)fprintf(stderr, "error: cannot open config database\n");
6703 return CLI_TRUE;
6704 }
6705
6706 int rc = 0;
6707 if (strcmp(argv[0], "list") == 0 || strcmp(argv[0], "ls") == 0) {
6708 printf("Configuration:\n");
6709 for (size_t i = 0; i < sizeof(CONFIG_KEYS) / sizeof(CONFIG_KEYS[0]); i++) {
6710 char ui_value[CLI_BUF_1K];
6711 const char *shown;
6712 if (config_key_is_ui(CONFIG_KEYS[i].key)) {
6713 config_ui_read(CONFIG_KEYS[i].key, ui_value, sizeof(ui_value));
6714 shown = ui_value;
6715 } else {
6716 shown = cbm_config_get(cfg, CONFIG_KEYS[i].key, CONFIG_KEYS[i].default_value);
6717 }
6718 printf(" %-25s = %-10s\n", CONFIG_KEYS[i].key, shown);
6719 }
6720 } else if (strcmp(argv[0], "get") == 0) {
6721 if (argc < MIN_ARGC_GET) {
6722 (void)fprintf(stderr, "Usage: config get <key>\n");
6723 rc = CLI_TRUE;
6724 } else {
6725 const config_key_def_t *def = config_key_lookup(argv[CLI_SKIP_ONE]);
6726 if (!def) {
6727 config_print_unknown_key(argv[CLI_SKIP_ONE]);
6728 rc = CLI_TRUE;
6729 } else {

Callers 2

handle_subcommandFunction · 0.85
cli_config_cmd_captureFunction · 0.85

Calls 12

cbm_get_home_dirFunction · 0.85
cbm_resolve_cache_dirFunction · 0.85
cbm_config_openFunction · 0.85
config_key_is_uiFunction · 0.85
config_ui_readFunction · 0.85
cbm_config_getFunction · 0.85
config_key_lookupFunction · 0.85
config_print_unknown_keyFunction · 0.85
config_ui_writeFunction · 0.85
cbm_config_setFunction · 0.85
cbm_config_deleteFunction · 0.85
cbm_config_closeFunction · 0.85

Tested by 1

cli_config_cmd_captureFunction · 0.68