ls but with io_uring

Add toggle to hide file mode, owner and group information #11

open opened by abeestrada.com targeting main from abeestrada.com/lsr: hide-mode-user-group
Labels

None yet.

Participants 2
AT URI
at://did:plc:ihr3z4bh6oia5lfrh2b4duk2/sh.tangled.repo.pull/3lppeg4ewzv22
+65 -14
Diff #1
+65 -14
src/main.zig
··· 16 17 18 19 - 20 - 21 - 22 - 23 \\ --hyperlinks=WHEN When to use OSC 8 hyperlinks (always, auto, never) 24 \\ --icons=WHEN When to display icons (always, auto, never) 25 \\ -l, --long Display extended file metadata 26 \\ -r, --reverse Reverse the sort order 27 \\ -t, --time Sort the entries by modification time, most recent first 28 \\ 29 - 30 31 32 ··· 38 @"group-directories-first": bool = true, 39 hyperlinks: When = .auto, 40 icons: When = .auto, 41 long: bool = false, 42 sort_by_mod_time: bool = false, 43 reverse_sort: bool = false, ··· 108 } 109 } 110 111 fn useHyperlinks(self: Options) bool { 112 switch (self.hyperlinks) { 113 .never => return false, ··· 212 }; 213 } else if (eql(opt, "icons")) { 214 cmd.opts.icons = std.meta.stringToEnum(Options.When, val) orelse { 215 - try stderr.print("Invalid color option: '{s}'", .{val}); 216 std.process.exit(1); 217 }; 218 } else if (eql(opt, "columns")) { ··· 504 505 const mode = entry.modeStr(); 506 507 - try writer.writeAll(&mode); 508 - try writer.writeByte(' '); 509 - try writer.writeAll(user.name); 510 - try writer.writeByteNTimes(' ', longest_user - user.name.len); 511 - try writer.writeByte(' '); 512 - try writer.writeAll(group.name); 513 - try writer.writeByteNTimes(' ', longest_group - group.name.len); 514 - try writer.writeByte(' '); 515 516 var size_buf: [16]u8 = undefined; 517 const size = try entry.humanReadableSize(&size_buf);
··· 16 17 18 19 + \\ -A, --almost-all Like --all, but skips implicit "." and ".." directories 20 + \\ -C, --columns Print the output in columns 21 + \\ --color=WHEN When to use colors (always, auto, never) 22 + \\ --group=WHEN When to display group (always, auto, never) 23 + \\ --group-directories-first Print all directories before printing regular files 24 \\ --hyperlinks=WHEN When to use OSC 8 hyperlinks (always, auto, never) 25 \\ --icons=WHEN When to display icons (always, auto, never) 26 \\ -l, --long Display extended file metadata 27 + \\ --mode=WHEN When to display mode (always, auto, never) 28 \\ -r, --reverse Reverse the sort order 29 \\ -t, --time Sort the entries by modification time, most recent first 30 + \\ --user=WHEN When to display user (always, auto, never) 31 \\ 32 + ; 33 34 35 ··· 41 @"group-directories-first": bool = true, 42 hyperlinks: When = .auto, 43 icons: When = .auto, 44 + mode: When = .auto, 45 + user: When = .auto, 46 + group: When = .auto, 47 long: bool = false, 48 sort_by_mod_time: bool = false, 49 reverse_sort: bool = false, ··· 114 } 115 } 116 117 + fn showMode(self: Options) bool { 118 + switch (self.mode) { 119 + .never => return false, 120 + .always => return true, 121 + .auto => return self.isatty(), 122 + } 123 + } 124 + 125 + fn showUser(self: Options) bool { 126 + switch (self.user) { 127 + .never => return false, 128 + .always => return true, 129 + .auto => return self.isatty(), 130 + } 131 + } 132 + 133 + fn showGroup(self: Options) bool { 134 + switch (self.group) { 135 + .never => return false, 136 + .always => return true, 137 + .auto => return self.isatty(), 138 + } 139 + } 140 + 141 fn useHyperlinks(self: Options) bool { 142 switch (self.hyperlinks) { 143 .never => return false, ··· 242 }; 243 } else if (eql(opt, "icons")) { 244 cmd.opts.icons = std.meta.stringToEnum(Options.When, val) orelse { 245 + try stderr.print("Invalid icons option: '{s}'", .{val}); 246 + std.process.exit(1); 247 + }; 248 + } else if (eql(opt, "mode")) { 249 + cmd.opts.mode = std.meta.stringToEnum(Options.When, val) orelse { 250 + try stderr.print("Invalid mode option: '{s}'", .{val}); 251 + std.process.exit(1); 252 + }; 253 + } else if (eql(opt, "user")) { 254 + cmd.opts.user = std.meta.stringToEnum(Options.When, val) orelse { 255 + try stderr.print("Invalid user option: '{s}'", .{val}); 256 + std.process.exit(1); 257 + }; 258 + } else if (eql(opt, "group")) { 259 + cmd.opts.group = std.meta.stringToEnum(Options.When, val) orelse { 260 + try stderr.print("Invalid group option: '{s}'", .{val}); 261 std.process.exit(1); 262 }; 263 } else if (eql(opt, "columns")) { ··· 549 550 const mode = entry.modeStr(); 551 552 + if (cmd.opts.showMode()) { 553 + try writer.writeAll(&mode); 554 + try writer.writeByte(' '); 555 + } 556 + if (cmd.opts.showUser()) { 557 + try writer.writeAll(user.name); 558 + try writer.writeByteNTimes(' ', longest_user - user.name.len); 559 + try writer.writeByte(' '); 560 + } 561 + if (cmd.opts.showGroup()) { 562 + try writer.writeAll(group.name); 563 + try writer.writeByteNTimes(' ', longest_group - group.name.len); 564 + try writer.writeByte(' '); 565 + } 566 567 var size_buf: [16]u8 = undefined; 568 const size = try entry.humanReadableSize(&size_buf);

History

3 rounds 1 comment
sign up or login to add to the discussion
2 commits
expand
feat: add options to hide file mode, owner and/or group
fmt: order options in alphabetical order
merge conflicts detected
expand
  • src/main.zig:24
  • src/main.zig:20
expand 1 comment
  1. Let's add the posix flags too (-o to disable showing owner, -g to disable showing group)
  2. The arg parsing should use parseArgBool rather than WHEN
2 commits
expand
feat: add options to hide file mode, owner and/or group
fmt: order options in alphabetical order
expand 0 comments
1 commit
expand
feat: add options to hide file mode, owner and/or group
expand 0 comments