aboutsummaryrefslogtreecommitdiff
path: root/src/tree.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/tree.zig')
-rw-r--r--src/tree.zig29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/tree.zig b/src/tree.zig
index 8599c7c..75efa9c 100644
--- a/src/tree.zig
+++ b/src/tree.zig
@@ -15,17 +15,16 @@ pub const Tree = struct {
pub const Iterator = struct {
root: fs.Path,
- dir: ?std.fs.Dir = null,
- iter: ?std.fs.Dir.Iterator = null,
+ iter: ?fs.Iterator = null,
pub fn deinit(self: *Iterator) void {
- if (self.dir) |*dir| dir.close();
+ if (self.iter) |*it| it.deinit();
}
pub fn next(self: *Iterator) !?Tree {
if (self.iter) |*iter| {
while (try iter.next()) |entry| {
- if (entry.kind == .directory) {
+ if (entry.type == .dir) {
return .{
.name = entry.name,
.root = .join(.{ self.root.name(), entry.name }),
@@ -37,31 +36,33 @@ pub const Iterator = struct {
}
};
-pub inline fn iterate(env: Env) !Iterator {
+pub inline fn iterate(env: *const Env) !Iterator {
const root = tree_root_dir(env);
- const dir = std.fs.openDirAbsoluteZ(root.name(), .{ .iterate = true }) catch |err| {
+ const iter = fs.iterate(&root) catch |err| {
if (err == error.FileNotFound) return .{ .root = undefined };
return err;
};
+
return .{
.root = root,
- .dir = dir,
- .iter = dir.iterate(),
+ .iter = iter,
};
}
-pub fn get(env: Env, tree_name: []const u8) !?Tree {
+pub fn get(env: *const Env, tree_name: []const u8) !?Tree {
var tree_root = tree_root_dir(env);
tree_root.append(.{tree_name});
return .{ .name = tree_name, .root = tree_root };
}
-pub fn remove(env: Env, tree: Tree) !void {
- try fs.rm(tree.root);
- fs.rm(env.ports_tree_path(tree.name, .{})) catch {};
- fs.rm(env.ports_src_path(tree.name, .{})) catch {};
+pub fn remove(env: *const Env, tree: Tree) !void {
+ const tree_path = env.ports_tree_path(tree.name, .{});
+ const src_path = env.ports_src_path(tree.name, .{});
+ try fs.rm(&tree.root);
+ fs.rm(&tree_path) catch {};
+ fs.rm(&src_path) catch {};
}
-fn tree_root_dir(env: Env) fs.Path {
+fn tree_root_dir(env: *const Env) fs.Path {
return env.etc_path(.{"ports"});
}