summaryrefslogtreecommitdiffstats
path: root/completions/tree
diff options
context:
space:
mode:
Diffstat (limited to 'completions/tree')
-rw-r--r--completions/tree46
1 files changed, 46 insertions, 0 deletions
diff --git a/completions/tree b/completions/tree
new file mode 100644
index 0000000..d274137
--- /dev/null
+++ b/completions/tree
@@ -0,0 +1,46 @@
+# tree(1) completion -*- shell-script -*-
+
+_comp_cmd_tree()
+{
+ local cur prev words cword was_split comp_args
+ _comp_initialize -s -- "$@" || return
+
+ local noargopts='!(-*|*[LPIHTo]*)'
+ # shellcheck disable=SC2254
+ case $prev in
+ -${noargopts}[LPIHT] | --filelimit | --timefmt | --help | --version)
+ return
+ ;;
+ --charset)
+ _comp_compgen -x iconv charsets
+ return
+ ;;
+ -${noargopts}o)
+ _comp_compgen_filedir
+ return
+ ;;
+ --sort)
+ _comp_compgen -- -W "name version size mtime ctime"
+ return
+ ;;
+ esac
+
+ [[ $was_split ]] && return
+
+ if [[ $cur == -* ]]; then
+ _comp_compgen_help
+ return
+ fi
+
+ # Note: bash-4.2 has a bug with [[ ${arr[*]} == *text* ]], so we
+ # assign ${words[*]} in a temporary variable "line".
+ local line="${words[*]}"
+ if [[ $line == *\ --fromfile\ * ]]; then
+ _comp_compgen_filedir
+ else
+ _comp_compgen_filedir -d
+ fi
+} &&
+ complete -F _comp_cmd_tree tree
+
+# ex: filetype=sh