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

Function cbm_agent_cli_exists

src/cli/cli.c:954–977  ·  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

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

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