| ... | ... | @@ -38,8 +38,24 @@ pub const ModFile = struct { |
| 38 | 38 | const name = mapping.get("name").?.string; |
| 39 | 39 | const main = mapping.get_string("main"); |
| 40 | 40 | |
| 41 | const dep_list = try dep_list_by_name(alloc, mapping, "dependencies"); |
| 42 | |
| 43 | return Self{ |
| 44 | .alloc = alloc, |
| 45 | .id = if (id.len == 0) try u.random_string(48) else id, |
| 46 | .name = name, |
| 47 | .main = main, |
| 48 | .c_include_dirs = try mapping.get_string_array(alloc, "c_include_dirs"), |
| 49 | .c_source_flags = try mapping.get_string_array(alloc, "c_source_flags"), |
| 50 | .c_source_files = try mapping.get_string_array(alloc, "c_source_files"), |
| 51 | .deps = dep_list.items, |
| 52 | .yaml = mapping, |
| 53 | }; |
| 54 | } |
| 55 | |
| 56 | fn dep_list_by_name(alloc: *std.mem.Allocator, mapping: yaml.Mapping, prop: []const u8) !*std.ArrayList(u.Dep) { |
| 41 | 57 | const dep_list = &std.ArrayList(u.Dep).init(alloc); |
| 42 | | if (mapping.get("dependencies")) |dep_seq| { |
| 58 | if (mapping.get(prop)) |dep_seq| { |
| 43 | 59 | if (dep_seq == .sequence) { |
| 44 | 60 | for (dep_seq.sequence) |item| { |
| 45 | 61 | var dtype: []const u8 = undefined; |
| ... | ... | @@ -81,17 +97,6 @@ pub const ModFile = struct { |
| 81 | 97 | } |
| 82 | 98 | } |
| 83 | 99 | } |
| 84 | | |
| 85 | | return Self{ |
| 86 | | .alloc = alloc, |
| 87 | | .id = if (id.len == 0) try u.random_string(48) else id, |
| 88 | | .name = name, |
| 89 | | .main = main, |
| 90 | | .c_include_dirs = try mapping.get_string_array(alloc, "c_include_dirs"), |
| 91 | | .c_source_flags = try mapping.get_string_array(alloc, "c_source_flags"), |
| 92 | | .c_source_files = try mapping.get_string_array(alloc, "c_source_files"), |
| 93 | | .deps = dep_list.items, |
| 94 | | .yaml = mapping, |
| 95 | | }; |
| 100 | return dep_list; |
| 96 | 101 | } |
| 97 | 102 | }; |