| ... | @@ -30,13 +30,16 @@ pub const ModFile = struct { | ... | @@ -30,13 +30,16 @@ pub const ModFile = struct { |
| 30 | defer file.close(); | 30 | defer file.close(); |
| 31 | const input = try file.reader().readAllAlloc(alloc, mb); | 31 | const input = try file.reader().readAllAlloc(alloc, mb); |
| 32 | const doc = try yaml.parse(alloc, input); | 32 | const doc = try yaml.parse(alloc, input); |
| | 33 | return from_mapping(alloc, doc.mapping); |
| | 34 | } |
| 33 | | 35 | |
| 34 | const id = doc.mapping.get_string("id"); | 36 | pub fn from_mapping(alloc: *std.mem.Allocator, mapping: yaml.Mapping) anyerror!Self { |
| 35 | const name = doc.mapping.get("name").?.string; | 37 | const id = mapping.get_string("id"); |
| 36 | const main = doc.mapping.get_string("main"); | 38 | const name = mapping.get("name").?.string; |
| | 39 | const main = mapping.get_string("main"); |
| 37 | | 40 | |
| 38 | const dep_list = &std.ArrayList(u.Dep).init(alloc); | 41 | const dep_list = &std.ArrayList(u.Dep).init(alloc); |
| 39 | if (doc.mapping.get("dependencies")) |dep_seq| { | 42 | if (mapping.get("dependencies")) |dep_seq| { |
| 40 | if (dep_seq == .sequence) { | 43 | if (dep_seq == .sequence) { |
| 41 | for (dep_seq.sequence) |item| { | 44 | for (dep_seq.sequence) |item| { |
| 42 | var dtype: []const u8 = undefined; | 45 | var dtype: []const u8 = undefined; |
| ... | @@ -74,11 +77,11 @@ pub const ModFile = struct { | ... | @@ -74,11 +77,11 @@ pub const ModFile = struct { |
| 74 | .id = if (id.len == 0) try u.random_string(48) else id, | 77 | .id = if (id.len == 0) try u.random_string(48) else id, |
| 75 | .name = name, | 78 | .name = name, |
| 76 | .main = main, | 79 | .main = main, |
| 77 | .c_include_dirs = try doc.mapping.get_string_array(alloc, "c_include_dirs"), | 80 | .c_include_dirs = try mapping.get_string_array(alloc, "c_include_dirs"), |
| 78 | .c_source_flags = try doc.mapping.get_string_array(alloc, "c_source_flags"), | 81 | .c_source_flags = try mapping.get_string_array(alloc, "c_source_flags"), |
| 79 | .c_source_files = try doc.mapping.get_string_array(alloc, "c_source_files"), | 82 | .c_source_files = try mapping.get_string_array(alloc, "c_source_files"), |
| 80 | .deps = dep_list.items, | 83 | .deps = dep_list.items, |
| 81 | .yaml = doc.mapping, | 84 | .yaml = mapping, |
| 82 | }; | 85 | }; |
| 83 | } | 86 | } |
| 84 | }; | 87 | }; |