Skip to content

Commit

Permalink
feat(complete): Add DirPath support in bash
Browse files Browse the repository at this point in the history
  • Loading branch information
sudotac committed Dec 13, 2023
1 parent 8e5ee3c commit 7bbe26b
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
3 changes: 3 additions & 0 deletions clap_complete/src/shells/bash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ fn option_details_for_path(cmd: &Command, path: &str) -> String {
for o in p.get_opts() {
let compopt = match o.get_value_hint() {
ValueHint::FilePath => Some("compopt -o filenames"),
ValueHint::DirPath => Some("compopt -o plusdirs"),
_ => None,
};

Expand Down Expand Up @@ -225,6 +226,8 @@ fn vals_for(o: &Arg) -> String {
.collect::<Vec<_>>()
.join(" ")
)
} else if o.get_value_hint() == ValueHint::DirPath {
String::from("") // should be empty to avoid duplicate candidates
} else if o.get_value_hint() == ValueHint::Other {
String::from("\"${cur}\"")
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -567,11 +567,17 @@ _exhaustive() {
return 0
;;
--dir)
COMPREPLY=($(compgen -f "${cur}"))
COMPREPLY=()
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
compopt -o plusdirs
fi
return 0
;;
-d)
COMPREPLY=($(compgen -f "${cur}"))
COMPREPLY=()
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
compopt -o plusdirs
fi
return 0
;;
--exe)
Expand Down
10 changes: 8 additions & 2 deletions clap_complete/tests/snapshots/value_hint.bash
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,17 @@ _my-app() {
return 0
;;
--dir)
COMPREPLY=($(compgen -f "${cur}"))
COMPREPLY=()
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
compopt -o plusdirs
fi
return 0
;;
-d)
COMPREPLY=($(compgen -f "${cur}"))
COMPREPLY=()
if [ "${BASH_VERSINFO[0]:-0}" -ge 4 ]; then
compopt -o plusdirs
fi
return 0
;;
--exe)
Expand Down

0 comments on commit 7bbe26b

Please sign in to comment.