diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:14:42 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 09:14:42 +0000 |
commit | 0bc58b66a4850cdb8458a86c3d9a2fc81de82aa3 (patch) | |
tree | ea0fe36eb5e6f40e0a1f765d44c4b0c0b2bfb089 /completions/xdg-mime | |
parent | Initial commit. (diff) | |
download | bash-completion-0bc58b66a4850cdb8458a86c3d9a2fc81de82aa3.tar.xz bash-completion-0bc58b66a4850cdb8458a86c3d9a2fc81de82aa3.zip |
Adding upstream version 1:2.11.upstream/1%2.11upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'completions/xdg-mime')
-rw-r--r-- | completions/xdg-mime | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/completions/xdg-mime b/completions/xdg-mime new file mode 100644 index 0000000..74c26c4 --- /dev/null +++ b/completions/xdg-mime @@ -0,0 +1,74 @@ +# xdg-mime(1) completion -*- shell-script -*- + +_xdg_mime_mimetype() +{ + COMPREPLY+=($(compgen -S / -W 'application audio font image message model + multipart text video' -- "$cur")) + [[ ${COMPREPLY-} == */ ]] && compopt -o nospace +} + +_xdg_mime() +{ + local cur prev words cword + _init_completion || return + + local args + _count_args + + if ((args == 1)); then + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '--help --manual --version' -- "$cur")) + return + fi + COMPREPLY=($(compgen -W \ + 'query default install uninstall' -- "$cur")) + return + fi + + case ${words[1]} in + query) + if ((args == 2)); then + COMPREPLY=($(compgen -W 'filetype default' -- "$cur")) + return + fi + case ${words[2]} in # TODO and args == 3 (takes only one arg!) + filetype) _filedir ;; + default) _xdg_mime_mimetype ;; + esac + ;; + default) + if ((args == 2)); then + local IFS=$' \t\n' reset=$(shopt -p nullglob) + shopt -s nullglob + local -a desktops=(/usr/share/applications/*.desktop) + desktops=("${desktops[@]##*/}") + $reset + IFS=$'\n' + COMPREPLY=($(compgen -W '${desktops[@]}' -- "$cur")) + else + _xdg_mime_mimetype + fi + ;; + install) + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '--mode --novendor' -- "$cur")) + elif [[ $prev == --mode ]]; then + COMPREPLY=($(compgen -W 'user system' -- "$cur")) + else + _filedir xml + fi + ;; + uninstall) + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '--mode' -- "$cur")) + elif [[ $prev == --mode ]]; then + COMPREPLY=($(compgen -W 'user system' -- "$cur")) + else + _filedir xml + fi + ;; + esac +} && + complete -F _xdg_mime xdg-mime + +# ex: filetype=sh |