+65
-14
src/main.zig
+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
abeestrada.com
submitted
#2
2 commits
expand
collapse
feat: add options to hide file mode, owner and/or group
fmt: order options in alphabetical order
merge conflicts detected
expand
collapse
expand
collapse
- src/main.zig:24
- src/main.zig:20
expand 1 comment
abeestrada.com
submitted
#1
expand 0 comments
abeestrada.com
submitted
#0
1 commit
expand
collapse
feat: add options to hide file mode, owner and/or group
-oto disable showing owner,-gto disable showing group)parseArgBoolrather than WHEN