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
+60 -9
Diff #0
+60 -9
src/main.zig
··· 23 23 \\ --hyperlinks=WHEN When to use OSC 8 hyperlinks (always, auto, never) 24 24 \\ --icons=WHEN When to display icons (always, auto, never) 25 25 \\ -l, --long Display extended file metadata 26 + \\ --mode=WHEN When to display mode (always, auto, never) 27 + \\ --user=WHEN When to display user (always, auto, never) 28 + \\ --group=WHEN When to display group (always, auto, never) 26 29 \\ -r, --reverse Reverse the sort order 27 30 \\ -t, --time Sort the entries by modification time, most recent first 28 31 \\ ··· 38 41 @"group-directories-first": bool = true, 39 42 hyperlinks: When = .auto, 40 43 icons: When = .auto, 44 + mode: When = .auto, 45 + user: When = .auto, 46 + group: When = .auto, 41 47 long: bool = false, 42 48 sort_by_mod_time: bool = false, 43 49 reverse_sort: bool = false, ··· 108 114 } 109 115 } 110 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 + 111 141 fn useHyperlinks(self: Options) bool { 112 142 switch (self.hyperlinks) { 113 143 .never => return false, ··· 212 242 }; 213 243 } else if (eql(opt, "icons")) { 214 244 cmd.opts.icons = std.meta.stringToEnum(Options.When, val) orelse { 215 - try stderr.print("Invalid color option: '{s}'", .{val}); 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}); 216 261 std.process.exit(1); 217 262 }; 218 263 } else if (eql(opt, "columns")) { ··· 504 549 505 550 const mode = entry.modeStr(); 506 551 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(' '); 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 + } 515 566 516 567 var size_buf: [16]u8 = undefined; 517 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
abeestrada.com submitted #0
1 commit
expand
feat: add options to hide file mode, owner and/or group
expand 0 comments