Files
modules/init/bash_completion.in
Xavier Delaruelle 5c7314c059 init: rename use compat var in MODULES_USE_COMPAT_VERSION
Use a distinguishable prefix for environment variables relative to the
Modules software: 'MODULES_'.
2017-09-22 21:32:37 +02:00

137 lines
5.1 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
}
@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 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 test 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|test|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
}
@compatversion@fi
complete -o default -F _module module