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

Function parse_mix_exs

src/pipeline/pass_pkgmap.c:606–638  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

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