mirror of
https://github.com/envmodules/modules.git
synced 2026-06-18 00:06:53 +08:00
Previously only '(default)' symbol was wiped from avail result in bash and tcsh completion scripts. Adapt sed rules to clean up every potential symbols.
94 lines
3.0 KiB
Bash
94 lines
3.0 KiB
Bash
#
|
|
# 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
|
|
}
|
|
|
|
_module() {
|
|
local cur="$2" prev="$3" cmds opts
|
|
|
|
COMPREPLY=()
|
|
|
|
cmds="add apropos aliases avail display help\
|
|
initadd initclear initlist initprepend initrm\
|
|
keyword list load path paths purge refresh reload restore\
|
|
rm save savelist saveshow saverm search show source swap\
|
|
switch unload unuse use whatis"
|
|
|
|
opts="-D -h -V --debug --help --version"
|
|
list_opts="-l -t --long --terse"
|
|
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)
|
|
COMPREPLY=( $(compgen -W "$(_module_savelist)" -- "$cur") );;
|
|
rm|remove|unload|switch|swap)
|
|
COMPREPLY=( $(IFS=: compgen -W "${LOADEDMODULES}" -- "$cur") );;
|
|
unuse) COMPREPLY=( $(IFS=: compgen -W "${MODULEPATH}" -- "$cur") );;
|
|
use|*-a*) ;; # let readline handle the completion
|
|
display|help|show|whatis)
|
|
COMPREPLY=( $(compgen -W "$(_module_avail)" -- "$cur") );;
|
|
-h|--help|-V|--version|aliases|apropos|keyword|purge|refresh|reload|search|source)
|
|
;;
|
|
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
|
|
}
|
|
complete -o default -F _module module
|