authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-07-05 17:06:38 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-07-05 17:06:38 -07:00
logecaf90414cf9773d13e537cd7ad657c44501a9be
treee6c6c2d8954bbb7ba3165a2447f4f4e99cf95ba0
parenta05c45e209e9f796b7b9e3a087110a2b39176d4f

refactor common to return items rather than accept list


2 files changed, 20 insertions(+), 18 deletions(-)

src/common.zig+17-17
...@@ -18,14 +18,13 @@ pub fn collect_deps_deep(dir: []const u8, mpath: []const u8, options: CollectOpt...@@ -18,14 +18,13 @@ pub fn collect_deps_deep(dir: []const u8, mpath: []const u8, options: CollectOpt
18 defer moduledeps.deinit();18 defer moduledeps.deinit();
19 try std.fs.cwd().makePath(".zigmod/deps/files");19 try std.fs.cwd().makePath(".zigmod/deps/files");
20 if (m.root_files.len > 0) {20 if (m.root_files.len > 0) {
21 try add_files_package("root", m.root_files, moduledeps, m.name);21 try moduledeps.append(try add_files_package("root", m.root_files, m.name));
22 }22 }
23 try moduledeps.append(try collect_deps(dir, mpath, options));23 try moduledeps.append(try collect_deps(dir, mpath, options));
24 for (m.devdeps) |d| {24 for (m.devdeps) |d| {
25 if (!d.is_for_this()) {25 if (try get_module_from_dep(d, dir, m.name, options)) |founddep| {
26 continue;26 try moduledeps.append(founddep);
27 }27 }
28 try get_module_from_dep(moduledeps, d, dir, m.name, options);
29 }28 }
30 return u.Module{29 return u.Module{
31 .is_sys_lib = false,30 .is_sys_lib = false,
...@@ -49,13 +48,12 @@ pub fn collect_deps(dir: []const u8, mpath: []const u8, options: CollectOptions)...@@ -49,13 +48,12 @@ pub fn collect_deps(dir: []const u8, mpath: []const u8, options: CollectOptions)
49 const moduledeps = &std.ArrayList(u.Module).init(gpa);48 const moduledeps = &std.ArrayList(u.Module).init(gpa);
50 defer moduledeps.deinit();49 defer moduledeps.deinit();
51 if (m.files.len > 0) {50 if (m.files.len > 0) {
52 try add_files_package(m.id, m.files, moduledeps, m.name);51 try moduledeps.append(try add_files_package(m.id, m.files, m.name));
53 }52 }
54 for (m.deps) |d| {53 for (m.deps) |d| {
55 if (!d.is_for_this()) {54 if (try get_module_from_dep(d, dir, m.name, options)) |founddep| {
56 continue;55 try moduledeps.append(founddep);
57 }56 }
58 try get_module_from_dep(moduledeps, d, dir, m.name, options);
59 }57 }
60 return u.Module{58 return u.Module{
61 .is_sys_lib = false,59 .is_sys_lib = false,
...@@ -182,11 +180,11 @@ fn get_moddir(basedir: []const u8, d: u.Dep, parent_name: []const u8, options: C...@@ -182,11 +180,11 @@ fn get_moddir(basedir: []const u8, d: u.Dep, parent_name: []const u8, options: C
182 }180 }
183}181}
184182
185pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []const u8, parent_name: []const u8, options: CollectOptions) anyerror!void {183pub fn get_module_from_dep(d: u.Dep, dir: []const u8, parent_name: []const u8, options: CollectOptions) anyerror!?u.Module {
186 const moddir = try get_moddir(dir, d, parent_name, options);184 const moddir = try get_moddir(dir, d, parent_name, options);
187 switch (d.type) {185 switch (d.type) {
188 .system_lib => {186 .system_lib => {
189 try list.append(u.Module{187 return u.Module{
190 .is_sys_lib = true,188 .is_sys_lib = true,
191 .id = "",189 .id = "",
192 .name = d.path,190 .name = d.path,
...@@ -200,7 +198,7 @@ pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []cons...@@ -200,7 +198,7 @@ pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []cons
200 .clean_path = d.path,198 .clean_path = d.path,
201 .yaml = null,199 .yaml = null,
202 .dep = d,200 .dep = d,
203 });201 };
204 },202 },
205 else => {203 else => {
206 var dd = try collect_deps(dir, try u.concat(&.{ moddir, "/zig.mod" }), options) catch |e| switch (e) {204 var dd = try collect_deps(dir, try u.concat(&.{ moddir, "/zig.mod" }), options) catch |e| switch (e) {
...@@ -208,9 +206,10 @@ pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []cons...@@ -208,9 +206,10 @@ pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []cons
208 if (d.main.len > 0 or d.c_include_dirs.len > 0 or d.c_source_files.len > 0) {206 if (d.main.len > 0 or d.c_include_dirs.len > 0 or d.c_source_files.len > 0) {
209 var mod_from = try u.Module.from(d, dir, options);207 var mod_from = try u.Module.from(d, dir, options);
210 if (d.type != .local) mod_from.clean_path = u.trim_prefix(moddir, dir)[1..];208 if (d.type != .local) mod_from.clean_path = u.trim_prefix(moddir, dir)[1..];
211 if (mod_from.is_for_this()) try list.append(mod_from);209 if (mod_from.is_for_this()) return mod_from;
210 return null;
212 }211 }
213 return;212 return e;
214 },213 },
215 else => e,214 else => e,
216 };215 };
...@@ -226,12 +225,13 @@ pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []cons...@@ -226,12 +225,13 @@ pub fn get_module_from_dep(list: *std.ArrayList(u.Module), d: u.Dep, dir: []cons
226 if (d.only_os.len > 0) dd.only_os = d.only_os;225 if (d.only_os.len > 0) dd.only_os = d.only_os;
227 if (d.except_os.len > 0) dd.except_os = d.except_os;226 if (d.except_os.len > 0) dd.except_os = d.except_os;
228 if (d.type == .local) dd.main = try std.fs.path.join(gpa, &.{ d.main, save.main });227 if (d.type == .local) dd.main = try std.fs.path.join(gpa, &.{ d.main, save.main });
229 if (dd.is_for_this()) try list.append(dd);228 if (dd.is_for_this()) return dd;
229 return null;
230 },230 },
231 }231 }
232}232}
233233
234fn add_files_package(pkg_name: []const u8, dirs: []const []const u8, list: *std.ArrayList(u.Module), parent_name: []const u8) !void {234fn add_files_package(pkg_name: []const u8, dirs: []const []const u8, parent_name: []const u8) !u.Module {
235 const destination = ".zigmod/deps/files";235 const destination = ".zigmod/deps/files";
236 const fname = try std.mem.join(gpa, "", &.{ pkg_name, ".zig" });236 const fname = try std.mem.join(gpa, "", &.{ pkg_name, ".zig" });
237237
...@@ -289,8 +289,8 @@ fn add_files_package(pkg_name: []const u8, dirs: []const []const u8, list: *std....@@ -289,8 +289,8 @@ fn add_files_package(pkg_name: []const u8, dirs: []const []const u8, list: *std.
289 .yaml = null,289 .yaml = null,
290 .deps = &.{},290 .deps = &.{},
291 };291 };
292 try get_module_from_dep(list, d, destination, parent_name, .{292 return (try get_module_from_dep(d, destination, parent_name, .{
293 .log = false,293 .log = false,
294 .update = false,294 .update = false,
295 });295 })).?;
296}296}
src/util/module.zig+3-1
...@@ -28,7 +28,9 @@ pub const Module = struct {...@@ -28,7 +28,9 @@ pub const Module = struct {
28 const moddeps = &std.ArrayList(Module).init(gpa);28 const moddeps = &std.ArrayList(Module).init(gpa);
29 defer moddeps.deinit();29 defer moddeps.deinit();
30 for (dep.deps) |d| {30 for (dep.deps) |d| {
31 try common.get_module_from_dep(moddeps, d, dir, dep.name, options);31 if (try common.get_module_from_dep(d, dir, dep.name, options)) |founddep| {
32 try moddeps.append(founddep);
33 }
32 }34 }
33 return Module{35 return Module{
34 .is_sys_lib = false,36 .is_sys_lib = false,