summaryrefslogtreecommitdiff
path: root/debian/bash_completion/contrib/modules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/bash_completion/contrib/modules')
-rw-r--r--debian/bash_completion/contrib/modules87
1 files changed, 87 insertions, 0 deletions
diff --git a/debian/bash_completion/contrib/modules b/debian/bash_completion/contrib/modules
new file mode 100644
index 0000000..8b180b1
--- /dev/null
+++ b/debian/bash_completion/contrib/modules
@@ -0,0 +1,87 @@
+# module completion by Ted Stern <stern@cray.com>
+#
+# $Id: modules,v 1.2 2005/07/11 17:49:14 ianmacd Exp $
+#
+# Completion for Environment Modules `module' alias.
+#
+# See http://sourceforge.net/projects/modules/
+# http://modules.sourceforge.net/
+#
+# There are several versions of modules that are commonly used. Older
+# Cray UNICOS systems and many other sites use 2.2.2b. The latest GPL'd
+# version is 3.1.6. But the module alias is somewhat self-documenting
+# via the `module help' command, so use that to print the options.
+#
+# Programmable completion might be more difficult under tcsh since the
+# module command is an alias, and the `module avail' command returns
+# its output as stderr.
+#
+type module &>/dev/null && {
+
+_module_list ()
+{
+ local modules="$( echo $LOADEDMODULES | sed 's/:/ /g' | sort )"
+ compgen -W "$modules" -- $1
+}
+
+_module_path ()
+{
+ local modules="$( echo $MODULEPATH | sed 's/:/ /g' | sort )"
+ compgen -W "$modules" -- $1
+}
+
+_module_avail ()
+{
+ local modules="$( \
+ module avail 2>&1 | \
+ egrep -v '^(-|$)' | \
+ xargs printf '%s\n' | sort )"
+
+ compgen -W "$modules" -- $1
+}
+
+# A completion function for the module alias
+_module () {
+ local cur prev options
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ if [ $COMP_CWORD -eq 1 ] ; then
+ # First parameter on line -- we expect it to be a mode selection
+
+ options="$( module help 2>&1 | egrep '^[[:space:]]*\+' | \
+ awk '{print $2}' | sed -e 's/|/ /g' | sort )"
+
+ COMPREPLY=( $(compgen -W "$options" -- $cur) )
+
+ elif [ $COMP_CWORD -eq 2 ] ; then
+
+ case "$prev" in
+ @(add|display|help|load|show|whatis))
+ COMPREPLY=( $(_module_avail $cur) )
+ ;;
+
+ @(rm|switch|swap|unload|update))
+ COMPREPLY=( $(_module_list $cur) )
+ ;;
+ unuse)
+ COMPREPLY=( $(_module_path $cur) )
+ ;;
+ esac
+ elif [ $COMP_CWORD -eq 3 ] ; then
+ case ${COMP_WORDS[1]} in
+ @(sw?(ap|itch)))
+ COMPREPLY=( $(_module_avail $cur) )
+ ;;
+ esac
+ fi
+ return 0
+}
+complete -o default -F _module module
+}
+# Local Variables:
+# mode:shell-script
+# sh-shell:bash
+# End: