summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2021-10-06 09:21:13 +0200
committerYorhel <git@yorhel.nl>2021-10-06 09:21:13 +0200
commit88c8f13c351a33d5a66f74f834d1692ff3708645 (patch)
treecb148c55db472e3d74d80fd724c0c77b71c400a4
parent900d31f6fd733227be88f1480c0c78f84f2ed9bb (diff)
Add CLI options for default sort
-rw-r--r--ncdu.pod14
-rw-r--r--src/main.zig30
2 files changed, 43 insertions, 1 deletions
diff --git a/ncdu.pod b/ncdu.pod
index 2b0a343..3903c99 100644
--- a/ncdu.pod
+++ b/ncdu.pod
@@ -230,6 +230,20 @@ Set to I<off> to disable the shared size column for directories, I<shared>
to display unique directory sizes as a separate column. These options can also
be cycled through in the browser with the 'u' key.
+=item --sort I<COLUMN>
+
+Change the default column to sort on. Accepted values are I<disk-usage> (the
+default), I<name>, I<apparent-size>, I<itemcount> or I<mtime>. The latter only
+makes sense in extended mode, see C<-e>.
+
+The column can be suffixed with I<-asc> or I<-desc> to set the order to
+ascending or descending, respectively. e.g. C<--sort=name-desc> will sort by
+name in descending order.
+
+=item --group-directories-first, --no-group-directories-first
+
+Sort (or not) directories before files.
+
=item --confirm-quit, --no-confirm-quit
Require a confirmation before quitting ncdu. Very helpful when you accidentally
diff --git a/src/main.zig b/src/main.zig
index 710f947..86237c4 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -305,7 +305,35 @@ pub fn main() void {
else if(opt.is("--hide-graph")) config.show_graph = false
else if(opt.is("--show-percent")) config.show_percent = true
else if(opt.is("--hide-percent")) config.show_percent = false
- else if(opt.is("--shared-column")) {
+ else if(opt.is("--group-directories-first")) config.sort_dirsfirst = true
+ else if(opt.is("--no-group-directories-first")) config.sort_dirsfirst = false
+ else if(opt.is("--sort")) {
+ var val: []const u8 = args.arg();
+ var ord: ?config.SortOrder = null;
+ if (std.mem.endsWith(u8, val, "-asc")) {
+ val = val[0..val.len-4];
+ ord = .asc;
+ } else if (std.mem.endsWith(u8, val, "-desc")) {
+ val = val[0..val.len-5];
+ ord = .desc;
+ }
+ if (std.mem.eql(u8, val, "name")) {
+ config.sort_col = .name;
+ config.sort_order = ord orelse .asc;
+ } else if (std.mem.eql(u8, val, "disk-usage")) {
+ config.sort_col = .blocks;
+ config.sort_order = ord orelse .desc;
+ } else if (std.mem.eql(u8, val, "apparent-size")) {
+ config.sort_col = .size;
+ config.sort_order = ord orelse .desc;
+ } else if (std.mem.eql(u8, val, "itemcount")) {
+ config.sort_col = .items;
+ config.sort_order = ord orelse .desc;
+ } else if (std.mem.eql(u8, val, "mtime")) {
+ config.sort_col = .mtime;
+ config.sort_order = ord orelse .asc;
+ } else ui.die("Unknown --sort option: {s}.\n", .{val});
+ } else if(opt.is("--shared-column")) {
const val = args.arg();
if (std.mem.eql(u8, val, "off")) config.show_shared = .off
else if (std.mem.eql(u8, val, "shared")) config.show_shared = .shared