Skip to content

Commit e919541

Browse files
committed
Add the ability to generate shell completions
1 parent 63b129b commit e919541

File tree

4 files changed

+31
-9
lines changed

4 files changed

+31
-9
lines changed

Cargo.lock

Lines changed: 18 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ trash-move = ["trash"]
3030

3131
[dependencies]
3232
clap = { version = "4.0.29", features = ["derive"] }
33+
clap_complete = "4.5.54"
3334
jwalk = "0.8.1"
3435
byte-unit = "4"
3536
atty = "0.2.11"

src/main.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#![forbid(rust_2018_idioms, unsafe_code)]
22
use anyhow::Result;
3-
use clap::Parser;
3+
use clap::{CommandFactory as _, Parser};
44
use dua::{canonicalize_ignore_dirs, TraversalSorting};
55
use log::info;
66
use simplelog::{Config, LevelFilter, WriteLogger};
@@ -141,6 +141,11 @@ fn main() -> Result<()> {
141141
}
142142
res
143143
}
144+
Some(Completions { shell }) => {
145+
let mut cmd = options::Args::command();
146+
clap_complete::generate(shell, &mut cmd, "dua", &mut io::stdout());
147+
return Ok(());
148+
}
144149
None => {
145150
let stdout = io::stdout();
146151
let stdout_locked = stdout.lock();

src/options.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use clap_complete::Shell;
12
use dua::ByteFormat as LibraryByteFormat;
23
use std::path::PathBuf;
34

@@ -123,4 +124,9 @@ pub enum Command {
123124
#[clap(value_parser)]
124125
input: Vec<PathBuf>,
125126
},
127+
/// Generate shell completions
128+
Completions {
129+
#[clap()]
130+
shell: Shell,
131+
},
126132
}

0 commit comments

Comments
 (0)