| ... | @@ -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 | } |
| 213 | | 217 | |
| 214 | fn print_deps(w: fs.File.Writer, dir: []const u8, m: u.Module, tabs: i32) anyerror!void { | 218 | fn 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 | } |