tangled
alpha
login
or
join now
abeestrada.com
/
lsr
forked from
rockorager.dev/lsr
0
fork
atom
this repo has no description
0
fork
atom
overview
issues
pulls
pipelines
feat: add options to hide file mode, owner and/or group
Abe Estrada
9 months ago
b7f8d04c
266579d3
+60
-9
1 changed file
expand all
collapse all
unified
split
src
main.zig
+60
-9
src/main.zig
···
24
24
\\ --hyperlinks=WHEN When to use OSC 8 hyperlinks (always, auto, never)
25
25
\\ --icons=WHEN When to display icons (always, auto, never)
26
26
\\ -l, --long Display extended file metadata
27
27
+
\\ --mode=WHEN When to display mode (always, auto, never)
28
28
+
\\ --user=WHEN When to display user (always, auto, never)
29
29
+
\\ --group=WHEN When to display group (always, auto, never)
27
30
\\ -r, --reverse Reverse the sort order
28
31
\\ -t, --time Sort the entries by modification time, most recent first
29
32
\\
···
39
42
@"group-directories-first": bool = true,
40
43
hyperlinks: When = .auto,
41
44
icons: When = .auto,
45
45
+
mode: When = .auto,
46
46
+
user: When = .auto,
47
47
+
group: When = .auto,
42
48
long: bool = false,
43
49
sort_by_mod_time: bool = false,
44
50
reverse_sort: bool = false,
···
109
115
}
110
116
}
111
117
118
118
+
fn showMode(self: Options) bool {
119
119
+
switch (self.mode) {
120
120
+
.never => return false,
121
121
+
.always => return true,
122
122
+
.auto => return self.isatty(),
123
123
+
}
124
124
+
}
125
125
+
126
126
+
fn showUser(self: Options) bool {
127
127
+
switch (self.user) {
128
128
+
.never => return false,
129
129
+
.always => return true,
130
130
+
.auto => return self.isatty(),
131
131
+
}
132
132
+
}
133
133
+
134
134
+
fn showGroup(self: Options) bool {
135
135
+
switch (self.group) {
136
136
+
.never => return false,
137
137
+
.always => return true,
138
138
+
.auto => return self.isatty(),
139
139
+
}
140
140
+
}
141
141
+
112
142
fn useHyperlinks(self: Options) bool {
113
143
switch (self.hyperlinks) {
114
144
.never => return false,
···
213
243
};
214
244
} else if (eql(opt, "icons")) {
215
245
cmd.opts.icons = std.meta.stringToEnum(Options.When, val) orelse {
216
216
-
try stderr.print("Invalid color option: '{s}'", .{val});
246
246
+
try stderr.print("Invalid icons option: '{s}'", .{val});
247
247
+
std.process.exit(1);
248
248
+
};
249
249
+
} else if (eql(opt, "mode")) {
250
250
+
cmd.opts.mode = std.meta.stringToEnum(Options.When, val) orelse {
251
251
+
try stderr.print("Invalid mode option: '{s}'", .{val});
252
252
+
std.process.exit(1);
253
253
+
};
254
254
+
} else if (eql(opt, "user")) {
255
255
+
cmd.opts.user = std.meta.stringToEnum(Options.When, val) orelse {
256
256
+
try stderr.print("Invalid user option: '{s}'", .{val});
257
257
+
std.process.exit(1);
258
258
+
};
259
259
+
} else if (eql(opt, "group")) {
260
260
+
cmd.opts.group = std.meta.stringToEnum(Options.When, val) orelse {
261
261
+
try stderr.print("Invalid group option: '{s}'", .{val});
217
262
std.process.exit(1);
218
263
};
219
264
} else if (eql(opt, "columns")) {
···
503
548
504
549
const mode = entry.modeStr();
505
550
506
506
-
try writer.writeAll(&mode);
507
507
-
try writer.writeByte(' ');
508
508
-
try writer.writeAll(user.name);
509
509
-
try writer.writeByteNTimes(' ', longest_user - user.name.len);
510
510
-
try writer.writeByte(' ');
511
511
-
try writer.writeAll(group.name);
512
512
-
try writer.writeByteNTimes(' ', longest_group - group.name.len);
513
513
-
try writer.writeByte(' ');
551
551
+
if (cmd.opts.showMode()) {
552
552
+
try writer.writeAll(&mode);
553
553
+
try writer.writeByte(' ');
554
554
+
}
555
555
+
if (cmd.opts.showUser()) {
556
556
+
try writer.writeAll(user.name);
557
557
+
try writer.writeByteNTimes(' ', longest_user - user.name.len);
558
558
+
try writer.writeByte(' ');
559
559
+
}
560
560
+
if (cmd.opts.showGroup()) {
561
561
+
try writer.writeAll(group.name);
562
562
+
try writer.writeByteNTimes(' ', longest_group - group.name.len);
563
563
+
try writer.writeByte(' ');
564
564
+
}
514
565
515
566
var size_buf: [16]u8 = undefined;
516
567
const size = try entry.humanReadableSize(&size_buf);