authorgravatar for hello@nektro.netMeghan <hello@nektro.net> 2020-12-15 07:37:55 -08:00
committergravatar for hello@nektro.netMeghan <hello@nektro.net> 2020-12-15 07:37:55 -08:00
log58d84ba634f55ea77398fd8a80aae05bd3eaa8a7
tree78596932ce1dcce392d705186c4992b3b00dfdcc
parent040ecdfc493f1861f3128430d2fca6392d56b12c

closes #3


1 files changed, 18 insertions(+), 4 deletions(-)

src/cmd_fetch.zig+18-4
......@@ -51,7 +51,11 @@ pub fn execute(args: [][]u8) !void {
5151 });
5252 try w.print("\n", .{});
5353 try w.print("pub const packages = ", .{});
54 try print_deps(w, dir, top_module, 0);
54 try print_deps(w, dir, top_module, 0, true);
55 try w.print(";\n", .{});
56 try w.print("\n", .{});
57 try w.print("pub const pkgs = ", .{});
58 try print_deps(w, dir, top_module, 0, false);
5559 try w.print(";\n", .{});
5660 try w.print("\n", .{});
5761 try w.print("{}\n", .{"pub const c_include_dirs = &[_][]const u8{"});
......@@ -211,23 +215,33 @@ fn fetch_deps(dir: []const u8, mpath: []const u8) anyerror!u.Module {
211215 };
212216}
213217
214fn print_deps(w: fs.File.Writer, dir: []const u8, m: u.Module, tabs: i32) anyerror!void {
218fn print_deps(w: fs.File.Writer, dir: []const u8, m: u.Module, tabs: i32, array: bool) anyerror!void {
215219 if (m.deps.len == 0 and tabs > 0) {
216220 try w.print("null", .{});
217221 return;
218222 }
219 try u.print_all(w, .{"&[_]build.Pkg{"}, true);
223 if (array) {
224 try u.print_all(w, .{"&[_]build.Pkg{"}, true);
225 } else {
226 try u.print_all(w, .{"struct {"}, true);
227 }
220228 const t = " ";
221229 const r = try u.repeat(t, tabs);
230 var c: usize = 0;
222231 for (m.deps) |d| {
223232 if (d.main.len == 0) {
224233 continue;
225234 }
235 c += 1;
236 if (!array) {
237 try w.print(" pub const {} = packages[{}];\n", .{d.name, c-1});
238 continue;
239 }
226240 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,"build.Pkg{"})});
227241 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,t,".name = \"",d.name,"\","})});
228242 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,t,".path = cache ++ \"/",d.clean_path,"/",d.main,"\","})});
229243 try w.print("{}", .{try u.concat(&[_][]const u8{r,t,t,".dependencies = "})});
230 try print_deps(w, dir, d, tabs+2);
244 try print_deps(w, dir, d, tabs+2, array);
231245 try w.print("{}\n", .{","});
232246 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,"},"})});
233247 }