sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/

contrib/completion/_sup.bash (3317B) - raw

      1 # Sup Bash completion
      2 #
      3 # * Complete options for all Sup commands.
      4 # * Disable completion for next option when current option takes an argument.
      5 # * Complete sources, directories, and files, where applicable.
      6 
      7 _sup_cmds() {
      8     local cur prev opts sources
      9     COMPREPLY=()
     10     cur="${COMP_WORDS[COMP_CWORD]}"
     11     prev="${COMP_WORDS[COMP_CWORD-1]}"
     12     sources="$(sed -n '/uri:/ {s/.*uri:\s*//p}' $HOME/.sup/sources.yaml)"
     13 
     14     case "${1##/*}" in
     15         sup-add)
     16             opts="--archive -a --unusual -u --sync-back --no-sync-back -s
     17                   --labels -l --force-new -f --force-account -o --version -v
     18                   --help -h mbox: maildir:"
     19 
     20             case $prev in
     21                 --labels|-l|--force-account|-o)
     22                     COMPREPLY=()
     23                     return 0
     24                     ;;
     25             esac
     26             ;;
     27         sup-config|sup-dump)
     28             opts="--version -v --help -h"
     29             ;;
     30         sup-import-dump)
     31            opts="--verbose -v --ignore-missing -i --warn-missing -w
     32                  --abort-missing -a --atomic -t --dry-run -n --version --help
     33                  -h"
     34             ;;
     35         sup)
     36             opts="--list-hooks -l --no-threads -n --no-initial-poll -o --search
     37                   -s --compose -c --subject -j --version -v --help -h"
     38 
     39             case $prev in
     40                 --search|-s|--compose|-c|--subject|-j)
     41                     COMPREPLY=()
     42                     return 0
     43                     ;;
     44             esac
     45             ;;
     46         sup-recover-sources)
     47             opts="--unusual --archive --scan-num --help -h $sources"
     48 
     49             case $prev in
     50                 --scan-num)
     51                     COMPREPLY=()
     52                     return 0
     53                     ;;
     54             esac
     55             ;;
     56         sup-sync)
     57             opts="--asis --restore --discard --archive -x --read -r
     58                   --extra-labels --verbose -v --optimize -o --all-sources
     59                   --dry-run -n --version --help -h ${sources}"
     60 
     61 
     62             case $prev in
     63                 --restore|--extra-labels)
     64                     COMPREPLY=()
     65                     return 0
     66                     ;;
     67             esac
     68             ;;
     69         sup-sync-back-maildir)
     70             maildir_sources="$(echo $sources | tr ' ' '\n' | grep maildir)"
     71             opts="--no-confirm -n --no-merge -m --list-sources -l
     72                   --unusual-sources-too -u --version -v --help -h
     73                   $maildir_sources"
     74             ;;
     75         sup-tweak-labels)
     76             opts="--add -a --remove -r --query -q --verbose -v --very-verbose
     77                   -e --all-sources --dry-run -n --no-sync-back -o --version
     78                   --help -h $sources"
     79 
     80             case $prev in
     81                 --add|-a|--remove|-r|--query|-q)
     82                     COMPREPLY=()
     83                     return 0
     84                     ;;
     85             esac
     86             ;;
     87     esac
     88 
     89     COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
     90     return 0
     91 }
     92 
     93 complete -F _sup_cmds sup \
     94                       sup-add \
     95                       sup-config \
     96                       sup-dump \
     97                       sup-recover-sources \
     98                       sup-sync \
     99                       sup-sync-back-maildir \
    100                       sup-tweak-labels
    101 
    102 complete -F _sup_cmds -o filenames -o plusdirs sup-import-dump