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

Function cbm_agent_cli_exists

src/cli/cli.c:948–971  ·  view source on GitHub ↗

Agent scans are also used for dry-run plans against an explicit/synthetic * home. In that mode, machine-global /usr/local and Homebrew fallbacks would * leak the host's agents into the result. Keep those fallbacks for a real-home * scan while still honoring the supplied PATH and home-local bin dirs. */

Source from the content-addressed store, hash-verified

946 * leak the host's agents into the result. Keep those fallbacks for a real-home
947 * scan while still honoring the supplied PATH and home-local bin dirs. */
948static bool cbm_agent_cli_exists(const char *name, const char *home_dir) {
949 const char *actual_home = cbm_get_home_dir();
950 if (actual_home && home_dir && strcmp(actual_home, home_dir) == 0) {
951 return cbm_find_cli(name, home_dir)[0] != '\0';
952 }
953
954 char found[CLI_BUF_512];
955 if (find_in_path(name, found, sizeof(found))) {
956 return true;
957 }
958 if (!name || !name[0] || !home_dir || !home_dir[0]) {
959 return false;
960 }
961 const char *const suffixes[] = {".npm/bin", ".local/bin", ".cargo/bin"};
962 char candidate[CLI_BUF_512];
963 for (size_t i = 0; i < sizeof(suffixes) / sizeof(suffixes[0]); i++) {
964 int written =
965 snprintf(candidate, sizeof(candidate), "%s/%s/%s", home_dir, suffixes[i], name);
966 if (written > 0 && (size_t)written < sizeof(candidate) && is_executable(candidate)) {
967 return true;
968 }
969 }
970 return false;
971}
972
973/* ── File utilities ───────────────────────────────────────────── */
974

Callers 2

cbm_detect_agentsFunction · 0.85

Calls 4

cbm_get_home_dirFunction · 0.85
cbm_find_cliFunction · 0.85
find_in_pathFunction · 0.85
is_executableFunction · 0.85

Tested by

no test coverage detected