- Bootstrap/ moved one level up
- pmodules.xyz() functions renamed to pbuild::xyz() - use pbuild for bootstrapping components
This commit is contained in:
76
Bootstrap/Pmodules/bash_completion
Normal file
76
Bootstrap/Pmodules/bash_completion
Normal file
@@ -0,0 +1,76 @@
|
||||
#
|
||||
# Bash commandline completion (bash 3.0 and above) for Modules 3.2.10
|
||||
#
|
||||
_module_avail() {
|
||||
"${PMODULES_HOME}"/bin/modulecmd bash -t avail 2>&1 | sed '
|
||||
/:$/d;
|
||||
/:ERROR:/d;
|
||||
s#^\(.*\)/\(.\+\)(default)#\1\n\1\/\2#;
|
||||
s#/(default)##g;
|
||||
s#/*$##g;'
|
||||
}
|
||||
|
||||
_module_not_yet_loaded() {
|
||||
comm -23 <(_module_avail|sort) <(tr : '\n' <<<${LOADEDMODULES}|sort)
|
||||
}
|
||||
|
||||
_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 avail clear dependencies display help\
|
||||
initadd initclear initlist initprepend initrm initswitch\
|
||||
keyword list load purge refresh rm search show swap switch sync\
|
||||
unload unuse update use whatis"
|
||||
|
||||
opts="-c -f -h -i -l -s -t -u -v -H -V\
|
||||
--create --force --help --human --icase\
|
||||
--long --silent --terse --userlvl --verbose --version"
|
||||
|
||||
case "$prev" in
|
||||
add|load) COMPREPLY=( $(compgen -W "$(_module_not_yet_loaded)" -- "$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
|
||||
-u|--userlvl) COMPREPLY=( $(compgen -W "novice expert advanced" -- "$cur") );;
|
||||
display|help|show|whatis)
|
||||
COMPREPLY=( $(compgen -W "$(_module_avail)" -- "$cur") );;
|
||||
*) 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
|
||||
r*) COMPREPLY="rm";; # also covers 'remove'
|
||||
sw*) COMPREPLY="switch";;
|
||||
|
||||
-*) COMPREPLY=( $(compgen -W "$opts" -- "$cur") );;
|
||||
*) COMPREPLY=( $(compgen -W "$cmds" -- "$cur") );;
|
||||
esac
|
||||
fi;;
|
||||
esac
|
||||
}
|
||||
complete -o default -F _module module
|
||||
Reference in New Issue
Block a user