# # Bash commandline completion (bash 3.0 and above) # _module_avail() { module avail -t 2>&1 | sed ' /^-\+/d; /^\s*$/d; /->.*$/d; /:$/d; /:ERROR:/d; s#^\(.*\)/\(.\+\)(.*default.*)#\1\n\1\/\2#; s#(.*)$##g; s#\s*$##g; s#/*$##g;' } _module_savelist() { module savelist -t 2>&1 | sed ' /Named collection list$/d; /:$/d; /:ERROR:/d;' } _module_not_yet_loaded() { _module_avail | sort | sed -r "\%^(${LOADEDMODULES//:/|})$%d" } _module_long_arg_list() { local cur="$1" i if [[ ${COMP_WORDS[COMP_CWORD-2]} == sw* ]] then COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") ) return fi for ((i = COMP_CWORD - 1; i > 0; i--)) do case ${COMP_WORDS[$i]} in add|load) COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") ) break;; rm|remove|unload|switch|swap) COMPREPLY=( $(IFS=: compgen -W "${LOADEDMODULES}" -- "$cur") ) break;; esac done } @compatversion@# define completion relative to active version @compatversion@if [ "$MODULES_USE_COMPAT_VERSION" = '1' ]; then @compatversion@_module() { @compatversion@ local cur="$2" prev="$3" cmds opts @compatversion@ @compatversion@ COMPREPLY=() @compatversion@ @compatversion@ cmds="add apropos avail clear display help\ @compatversion@ initadd initclear initlist initprepend initrm initswitch\ @compatversion@ keyword list load purge refresh rm show swap switch\ @compatversion@ unload unuse update use whatis" @compatversion@ @compatversion@ opts="-c -f -h -i -l -s -t -u -v -H -V\ @compatversion@ --create --force --help --human --icase\ @compatversion@ --long --silent --terse --userlvl --verbose --version" @compatversion@ @compatversion@ case "$prev" in @compatversion@ add|load) COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") );; @compatversion@ rm|remove|unload|switch|swap) @compatversion@ COMPREPLY=( $(IFS=: compgen -W "${LOADEDMODULES}" -- "$cur") );; @compatversion@ unuse) COMPREPLY=( $(IFS=: compgen -W "${MODULEPATH}" -- "$cur") );; @compatversion@ use|*-a*) ;; # let readline handle the completion @compatversion@ -u|--userlvl) COMPREPLY=( $(compgen -W "novice expert advanced" -- "$cur") );; @compatversion@ av*|disp*|help|show|whatis) @compatversion@ COMPREPLY=( $(compgen -W "$(_module_avail)" -- "$cur") );; @compatversion@ *) if test $COMP_CWORD -gt 2 @compatversion@ then @compatversion@ _module_long_arg_list "$cur" @compatversion@ else @compatversion@ case "$cur" in @compatversion@ # The mappings below are optional abbreviations for convenience @compatversion@ ls) COMPREPLY="list";; # map ls -> list @compatversion@ r*) COMPREPLY="rm";; # also covers 'remove' @compatversion@ sw*) COMPREPLY="switch";; @compatversion@ @compatversion@ -*) COMPREPLY=( $(compgen -W "$opts" -- "$cur") );; @compatversion@ *) COMPREPLY=( $(compgen -W "$cmds" -- "$cur") );; @compatversion@ esac @compatversion@ fi;; @compatversion@ esac @compatversion@} @compatversion@else _module() { local cur="$2" prev="$3" cmds opts COMPREPLY=() cmds="add apropos aliases avail append-path display help initadd\ initclear initlist initprepend initrm is-loaded is-saved is-used\ is-avail info-loaded keyword list load path paths purge prepend-path\ refresh reload restore rm remove-path save savelist saveshow saverm\ search show source swap switch test unload unuse use whatis" opts="-D -h -V --debug --help --version" list_opts="-l -t --long --terse" path_opts="-d --delim" avail_opts="-d -L -l -t --default --latest --long --terse" case "$prev" in add|load) COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$cur") );; avail) COMPREPLY=( $(compgen -W "$avail_opts $(_module_avail)" -- "$cur") );; list|savelist) COMPREPLY=( $(compgen -W "$list_opts" -- "$cur") );; restore|save|saveshow|saverm|is-saved) COMPREPLY=( $(compgen -W "$(_module_savelist)" -- "$cur") );; rm|remove|unload|switch|swap) COMPREPLY=( $(IFS=: compgen -W "${LOADEDMODULES}" -- "$cur") );; unuse|is-used) COMPREPLY=( $(IFS=: compgen -W "${MODULEPATH}" -- "$cur") );; use|-a|--append) ;; # let readline handle the completion display|help|show|test|whatis|is-loaded|is-avail|info-loaded) COMPREPLY=( $(compgen -W "$(_module_avail)" -- "$cur") );; -h|--help|-V|--version|aliases|apropos|keyword|purge|refresh|reload|search|source) ;; append-path|prepend-path|remove-path) COMPREPLY=( $(compgen -W "$path_opts" -- "$cur") );; initadd|initclear|initlist|initprepend|initrm) ;; *) if test $COMP_CWORD -gt 2 then _module_long_arg_list "$cur" else case "$cur" in # The mappings below are optional abbreviations for convenience ls) COMPREPLY="list";; # map ls -> list sw*) COMPREPLY="switch";; -*) COMPREPLY=( $(compgen -W "$opts" -- "$cur") );; *) COMPREPLY=( $(compgen -W "$opts $cmds" -- "$cur") );; esac fi;; esac } @compatversion@fi complete -o default -F _module module