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 {...@@ -51,7 +51,11 @@ pub fn execute(args: [][]u8) !void {
51 });51 });
52 try w.print("\n", .{});52 try w.print("\n", .{});
53 try w.print("pub const packages = ", .{});53 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);
55 try w.print(";\n", .{});59 try w.print(";\n", .{});
56 try w.print("\n", .{});60 try w.print("\n", .{});
57 try w.print("{}\n", .{"pub const c_include_dirs = &[_][]const u8{"});61 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 {...@@ -211,23 +215,33 @@ fn fetch_deps(dir: []const u8, mpath: []const u8) anyerror!u.Module {
211 };215 };
212}216}
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 {
215 if (m.deps.len == 0 and tabs > 0) {219 if (m.deps.len == 0 and tabs > 0) {
216 try w.print("null", .{});220 try w.print("null", .{});
217 return;221 return;
218 }222 }
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 }
220 const t = " ";228 const t = " ";
221 const r = try u.repeat(t, tabs);229 const r = try u.repeat(t, tabs);
230 var c: usize = 0;
222 for (m.deps) |d| {231 for (m.deps) |d| {
223 if (d.main.len == 0) {232 if (d.main.len == 0) {
224 continue;233 continue;
225 }234 }
235 c += 1;
236 if (!array) {
237 try w.print(" pub const {} = packages[{}];\n", .{d.name, c-1});
238 continue;
239 }
226 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,"build.Pkg{"})});240 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,"build.Pkg{"})});
227 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,t,".name = \"",d.name,"\","})});241 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,t,".name = \"",d.name,"\","})});
228 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,t,".path = cache ++ \"/",d.clean_path,"/",d.main,"\","})});242 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,t,".path = cache ++ \"/",d.clean_path,"/",d.main,"\","})});
229 try w.print("{}", .{try u.concat(&[_][]const u8{r,t,t,".dependencies = "})});243 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);
231 try w.print("{}\n", .{","});245 try w.print("{}\n", .{","});
232 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,"},"})});246 try w.print("{}\n", .{try u.concat(&[_][]const u8{r,t,"},"})});
233 }247 }