this repo has no description

opts: add almost-all

+21
+21
src/main.zig
··· 7 7 8 8 const Options = struct { 9 9 all: bool = false, 10 + almost_all: bool = false, 10 11 long: bool = false, 11 12 directory: [:0]const u8 = ".", 12 13 }; ··· 37 38 const str = arg[1..]; 38 39 for (str) |b| { 39 40 switch (b) { 41 + 'A' => cmd.opts.almost_all = true, 40 42 'a' => cmd.opts.all = true, 41 43 'l' => cmd.opts.long = true, 42 44 else => { ··· 53 55 cmd.opts.all = true 54 56 else if (eql(opt, "long")) 55 57 cmd.opts.long = true 58 + else if (eql(opt, "almost-all")) 59 + cmd.opts.almost_all = true 56 60 else { 57 61 const w = std.io.getStdErr().writer(); 58 62 try w.print("Invalid opt: '{s}'", .{opt}); ··· 212 216 const dir: std.fs.Dir = .{ .fd = fd }; 213 217 214 218 var results: std.ArrayListUnmanaged(Entry) = .empty; 219 + 220 + // Preallocate some memory 221 + try results.ensureUnusedCapacity(cmd.arena, 64); 222 + 223 + // zig skips "." and "..", so we manually add them if needed 224 + if (cmd.opts.all) { 225 + results.appendAssumeCapacity(.{ 226 + .name = ".", 227 + .kind = .directory, 228 + .statx = undefined, 229 + }); 230 + results.appendAssumeCapacity(.{ 231 + .name = "..", 232 + .kind = .directory, 233 + .statx = undefined, 234 + }); 235 + } 215 236 216 237 var iter = dir.iterate(); 217 238 while (try iter.next()) |dirent| {