authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-02-23 14:31:17 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-02-23 14:31:17 -08:00
log6ff9fb3d04a5025507ab4790324024b1dc12d2e4
tree6e30e80b1d8df57eecaed9ffb3bd61bf16842b59
parente376598e0390db56c5f9180ade5a813f015e48df

common/collect_deps- follow principle 2 better


1 files changed, 14 insertions(+), 12 deletions(-)

src/common.zig+14-12
......@@ -15,6 +15,7 @@ pub const CollectOptions = struct {
1515pub fn collect_deps(dir: []const u8, mpath: []const u8, comptime options: CollectOptions) anyerror!u.Module {
1616 const m = try u.ModFile.init(gpa, mpath);
1717 const moduledeps = &std.ArrayList(u.Module).init(gpa);
18 const tempdir = try fs.path.join(gpa, &.{dir, "temp"});
1819 var moddir: []const u8 = undefined;
1920 for (m.deps) |d| {
2021 const p = try fs.path.join(gpa, &.{dir, try d.clean_path()});
......@@ -26,12 +27,6 @@ pub fn collect_deps(dir: []const u8, mpath: []const u8, comptime options: Collec
2627 // no op
2728 },
2829 .git => blk: {
29 if (!try u.does_folder_exist(p)) {
30 try d.type.pull(d.path, p);
31 }
32 else {
33 if (options.update) { try d.type.update(p, d.path); }
34 }
3530 if (d.version.len > 0) {
3631 const vers = u.parse_split(u.GitVersionType, "-").do(d.version) catch |e| switch (e) {
3732 error.IterEmpty => unreachable,
......@@ -43,23 +38,30 @@ pub fn collect_deps(dir: []const u8, mpath: []const u8, comptime options: Collec
4338 };
4439 if (try u.does_folder_exist(pv)) {
4540 if (vers.id == .branch) {
46 if (options.update) { try d.type.update(p, d.path); }
41 if (options.update) { try d.type.update(pv, d.path); }
4742 }
4843 moddir = pv;
4944 break :blk;
5045 }
51 if ((try u.run_cmd(p, &.{"git", "checkout", vers.string})) > 0) {
46 try d.type.pull(d.path, tempdir);
47 if ((try u.run_cmd(tempdir, &.{"git", "checkout", vers.string})) > 0) {
5248 u.assert(false, "fetch: git: {s}: {s} {s} does not exist", .{d.path, @tagName(vers.id), vers.string});
53 } else {
54 _ = try u.run_cmd(p, &.{"git", "checkout", "-"});
5549 }
56 try d.type.pull(d.path, pv);
57 _ = try u.run_cmd(pv, &.{"git", "checkout", vers.string});
50 const td_fd = try fs.cwd().openDir(dir, .{});
51 try u.mkdir_all(pv);
52 try td_fd.rename("temp", try d.clean_path_v());
5853 if (vers.id != .branch) {
5954 const pvd = try std.fs.cwd().openDir(pv, .{});
6055 try pvd.deleteTree(".git");
6156 }
6257 moddir = pv;
58 break :blk;
59 }
60 if (!try u.does_folder_exist(p)) {
61 try d.type.pull(d.path, p);
62 }
63 else {
64 if (options.update) { try d.type.update(p, d.path); }
6365 }
6466 },
6567 .hg => {