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

Function parse_mix_exs

src/pipeline/pass_pkgmap.c:602–634  ·  view source on GitHub ↗

Elixir: mix.exs — app: :name */

Source from the content-addressed store, hash-verified

600
601/* Elixir: mix.exs — app: :name */
602static void parse_mix_exs(const char *source, int source_len, const char *rel_path,
603 cbm_pkg_entries_t *entries) {
604 const char *end = source + source_len;
605 /* Look for app: :app_name */
606 const char *val = find_line_value(source, source_len, "app:");
607 if (!val) {
608 return;
609 }
610 while (val < end && (*val == ' ' || *val == '\t')) {
611 val++;
612 }
613 if (val >= end || *val != ':') {
614 return;
615 }
616 val++; /* skip : */
617 const char *start = val;
618 while (val < end && *val != ',' && *val != '\n' && *val != ' ' && *val != ')') {
619 val++;
620 }
621 if (val <= start) {
622 return;
623 }
624 char *app_name = cbm_strndup(start, (size_t)(val - start));
625 char *dir = path_dirname(rel_path);
626 char entry[PKGMAP_PATH_BUF];
627 snprintf(entry, sizeof(entry), "%s%slib/%s", dir[0] ? dir : "", dir[0] ? "/" : "", app_name);
628 /* Register with colon prefix as Elixir uses :atom syntax */
629 char atom_name[PKGMAP_PATH_BUF];
630 snprintf(atom_name, sizeof(atom_name), "%s", app_name);
631 pkg_entries_push(entries, strdup(atom_name), strdup(entry));
632 free(app_name);
633 free(dir);
634}
635
636/* Ruby: *.gemspec — spec.name = '...' */
637static void parse_gemspec(const char *source, int source_len, const char *rel_path,

Callers 1

cbm_pkgmap_try_parseFunction · 0.85

Calls 4

find_line_valueFunction · 0.85
cbm_strndupFunction · 0.85
path_dirnameFunction · 0.85
pkg_entries_pushFunction · 0.85

Tested by

no test coverage detected