mu: add mu-completion.bash

Was missing.
This commit is contained in:
Dirk-Jan C. Binnema
2026-08-08 11:29:33 +03:00
committed by Seth Ladygo
parent f9af43c1a0
commit 74f8f6bcfb

View File

@ -0,0 +1,296 @@
# bash completion for mu
#
# Install by sourcing this file from your .bashrc, or by placing it, named 'mu',
# in the bash-completion completions directory.
_mu_cmd_add() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_cfind() {
case "$prev" in
-o|--format) COMPREPLY=($(compgen -W "bbdb csv json mutt-ab mutt-alias org-contact plain wl" -- "$cur")); return;;
--after) return;;
-n|--maxnum) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -o --format -p --personal --after -n --maxnum --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_extract() {
case "$prev" in
--parts) return;;
--target-dir) COMPREPLY=($(compgen -d -- "$cur")); return;;
--matches) return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -r --auto-retrieve --decrypt -a --save-attachments --save-all --overwrite --play --parts --target-dir -u --uncooked --matches -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_fields() {
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_find() {
case "$prev" in
-o|--format) COMPREPLY=($(compgen -W "json json2 links plain sexp xml" -- "$cur")); return;;
-n|--maxnum) return;;
-f|--fields) return;;
-s|--sortfield) COMPREPLY=($(compgen -W "a bcc c cc changed d date f flags from g h i k l labels language list m maildir message-id p path priority q r references s size subject t tags thread to u utc-offset v w x z" -- "$cur")); return;;
-b|--bookmark) return;;
--linksdir) COMPREPLY=($(compgen -d -- "$cur")); return;;
--after) return;;
--summary-len) return;;
--exec) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -t --threads -u --skip-dups -r --include-related -a --analyze -o --format -n --maxnum -f --fields -s --sortfield -z --reverse -b --bookmark --clearlinks --linksdir --after --summary-len --exec --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_help() {
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_index() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --lazy-check --nocleanup --reindex --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_info() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_init() {
case "$prev" in
-m|--maildir) COMPREPLY=($(compgen -d -- "$cur")); return;;
--personal-address|--my-address) return;;
--ignored-address) return;;
--max-message-size) return;;
--batch-size) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -m --maildir --personal-address --my-address --ignored-address --max-message-size --batch-size --support-ngrams --reinit --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_labels_update() {
case "$prev" in
--labels) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --labels -n --dry-run --muhome" -- "$cur"));;
esac
}
_mu_cmd_labels_clear() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -n --dry-run --muhome" -- "$cur"));;
esac
}
_mu_cmd_labels_list() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome" -- "$cur"));;
esac
}
_mu_cmd_labels_restore_list() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome" -- "$cur"));;
esac
}
_mu_cmd_labels_export() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_labels_import() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -n --dry-run --muhome" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_labels() {
local i=$1 sub=
while (( i < COMP_CWORD )); do
case "${COMP_WORDS[i]}" in
=|-*) ((i++));;
*) sub="${COMP_WORDS[i]}"; ((i++)); break;;
esac
done
case "$sub" in
update) _mu_cmd_labels_update "$i"; return;;
clear) _mu_cmd_labels_clear "$i"; return;;
list) _mu_cmd_labels_list "$i"; return;;
restore-list) _mu_cmd_labels_restore_list "$i"; return;;
export) _mu_cmd_labels_export "$i"; return;;
import) _mu_cmd_labels_import "$i"; return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -W "update clear list restore-list export import" -- "$cur"));;
esac
}
_mu_cmd_mkdir() {
case "$prev" in
--mode) return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --mode -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -d -- "$cur"));;
esac
}
_mu_cmd_move() {
case "$prev" in
--flags) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --change-name --update-dups -n --dry-run --flags --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_remove() {
case "$prev" in
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_scm() {
case "$prev" in
--eval) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --listen --eval --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_server() {
case "$prev" in
--eval) return;;
--muhome) COMPREPLY=($(compgen -d -- "$cur")); return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all --commands --eval --allow-temp-file --listen --muhome -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
esac
}
_mu_cmd_verify() {
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -r --auto-retrieve --decrypt -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd_view() {
case "$prev" in
-o|--format) COMPREPLY=($(compgen -W "html plain sexp" -- "$cur")); return;;
--summary-len) return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-h --help --help-all -o --format -r --auto-retrieve --decrypt --summary-len --terminate -V --version -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -f -- "$cur"));;
esac
}
_mu_cmd() {
local i=$1 sub=
while (( i < COMP_CWORD )); do
case "${COMP_WORDS[i]}" in
=|-*) ((i++));;
*) sub="${COMP_WORDS[i]}"; ((i++)); break;;
esac
done
case "$sub" in
add) _mu_cmd_add "$i"; return;;
cfind) _mu_cmd_cfind "$i"; return;;
extract) _mu_cmd_extract "$i"; return;;
fields) _mu_cmd_fields "$i"; return;;
find) _mu_cmd_find "$i"; return;;
help) _mu_cmd_help "$i"; return;;
index) _mu_cmd_index "$i"; return;;
info) _mu_cmd_info "$i"; return;;
init) _mu_cmd_init "$i"; return;;
labels) _mu_cmd_labels "$i"; return;;
mkdir) _mu_cmd_mkdir "$i"; return;;
move) _mu_cmd_move "$i"; return;;
remove) _mu_cmd_remove "$i"; return;;
scm) _mu_cmd_scm "$i"; return;;
server) _mu_cmd_server "$i"; return;;
verify) _mu_cmd_verify "$i"; return;;
view) _mu_cmd_view "$i"; return;;
esac
case "$cur" in
-*) COMPREPLY=($(compgen -W "-V --version -h --help --help-all -q --quiet -v --verbose --nocolor" -- "$cur"));;
*) COMPREPLY=($(compgen -W "add cfind extract fields find help index info init labels mkdir move remove scm server verify view" -- "$cur"));;
esac
}
_mu() {
local cur prev
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
# handle '--opt=value' (bash splits on '=')
[[ "$cur" == "=" ]] && cur=""
[[ "$prev" == "=" && $COMP_CWORD -ge 2 ]] && prev="${COMP_WORDS[COMP_CWORD-2]}"
_mu_cmd 1
}
complete -F _mu mu