D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
Modules
/
init
/
zsh-functions
/
Filename :
_module
back
Copy
#compdef module # # Zsh command-line completion for module # Copyright (C) 2017 Xavier Delaruelle <xavier.delaruelle@cea.fr> # _module_avail() { local cur="${1:-}"; # skip avail call if word currently being completed is an option keyword if [ -z "$cur" -o "${cur:0:1}" != '-' ]; then module avail --color=never -s -t -S --no-indepth $cur 2>&1 | sed ' /^-\+/d; /^\s*$/d; /->.*$/d; /:$/d; s#^\(.*\)/\(.\+\)(.*default.*)#\1\n\1\/\2#; s#(.*)$##g; s#\s*$##g;' fi } _module_savelist() { module savelist --color=never -s -t 2>&1 | sed ' /No named collection\.$/d; /Named collection list$/d; /:$/d;' } _module_not_yet_loaded() { _module_avail ${1:-} | sort | sed -E "\%^(${LOADEDMODULES//:/|})$%d" } _module_avail_mods() { local -a avail_mods; local suffix=' '; avail_mods=(${$(_module_avail $cur ${1:-})}) # do not append space to word completed if it is a directory (ends with /) for val in $avail_mods; do if [ "${val: -1:1}" = '/' ]; then suffix='' break fi done compadd -S "$suffix" -a avail_mods && ret=0 } _module_saved_colls() { local -a saved_colls; saved_colls=(${$(_module_savelist)}) _describe -t saved-colls 'saved collections' saved_colls && ret=0 } _module_notloaded_mods() { local -a not_yet_loaded_mods; local suffix=' '; not_yet_loaded_mods=(${$(_module_not_yet_loaded ${1:-})}) # do not append space to word completed if it is a directory (ends with /) for val in $not_yet_loaded_mods; do if [ "${val: -1:1}" = '/' ]; then suffix='' break fi done compadd -S "$suffix" -a not_yet_loaded_mods && ret=0 } _module_loaded_mods() { local -a loaded_mods; loaded_mods=(${=LOADEDMODULES//:/ }) _describe -t loaded-mods 'loaded modulefiles' loaded_mods && ret=0 } _module_used_paths() { local -a used_paths; used_paths=(${=MODULEPATH//:/ }) _describe -t used-paths 'enabled modulepaths' used_paths && ret=0 } _module() { typeset -A opt_args _arguments -C \ '(-D --debug)'{-D,--debug}'[Enable debug messages]' \ '(-v --verbose)'{-v,--verbose}'[Enable verbose messages]' \ '(-s --silent)'{-s,--silent}'[Turn off error, warning and informational messages]' \ '(-h --help)'{-h,--help}'[Usage info]' \ '(-V --version)'{-V,--version}'[Module version]' \ '--paginate[Pipe mesg output into a pager if stream attached to terminal]' \ '--no-pager[Do not pipe message output into a pager]' \ '(--color --color=)'{--color,--color=}'[Colorize the output]' \ '(-): :->cmd' \ '(-)*:: :->arg' && ret=0 case $state in (cmd) local -a cmds; cmds=( 'add:Load modulefile(s)' 'load:Load modulefile(s)' 'rm:Remove modulefile(s)' 'remove:Remove modulefile(s)' 'del:Remove modulefile(s)' 'unload:Remove modulefile(s)' 'purge:Unload all loaded modulefiles' 'reload:Unload then load all loaded modulefiles' 'refresh:Unload then load all loaded modulefiles' 'switch:Unload mod1 and load mod2' 'swap:Unload mod1 and load mod2' 'list:List loaded modules' 'avail:List all or matching available modules' 'is-avail:Is any of the modulefile(s) available' 'is-loaded:Test if any of the modulefile(s) are loaded' 'info-loaded:Get full name of matching loaded module(s)' 'aliases:List all module aliases' 'whatis:Print whatis information of modulefile(s)' 'apropos:Search all name and whatis containing str' 'keyword:Search all name and whatis containing str' 'search:Search all name and whatis containing str' 'save:Save current module list to collection' 'restore:Restore module list from collection or file' 'saverm:Remove saved collection' 'saveshow:Display information about collection' 'savelist:List all saved collections' 'is-saved:Test if any of the collection(s) exists' 'initlist:List all modules loaded from init file' 'initadd:Add modulefile to shell init file' 'initrm:Remove modulefile from shell init file' 'initprepend:Add to beginning of list in init file' 'initswitch:Switch mod1 with mod2 from init file' 'initclear:Clear all modulefiles from init file' 'help:Print this or modulefile(s) help info' 'display:Display information about modulefile(s)' 'show:Display information about modulefile(s)' 'test:Test modulefile(s)' 'use:Add dir(s) to MODULEPATH variable' 'unuse:Remove dir(s) from MODULEPATH variable' 'is-used:Is any of the dir(s) enabled in MODULEPATH' 'path:Print modulefile path' 'paths:Print path of matching available modules' 'source:Execute scriptfile(s)' 'append-path:Append value to environment variable' 'prepend-path:Prepend value to environment variable' 'remove-path:Remove value from environment variable' 'clear:Reset Modules-specific runtime information' 'config:Display or set Modules configuration' ) # show commands only with compatible options if (( !$+opt_args[-h] && !$+opt_args[--help] \ && !$+opt_args[-V] && !$+opt_args[--version] )); then _describe -t cmds 'Module Sub-Commands' cmds && ret=0 fi ;; (arg) local cmd="${words[1]}" local cur="${words[CURRENT]}" case $cmd in (load|add) _arguments \ '--auto[Enable automated module handling mode]' \ '--no-auto[Disable automated module handling mode]' \ '(-f --force)'{-f,--force}'[By-pass dependency consistency]' \ '(-i --icase)'{-i,--icase}'[Case insensitive match]' \ "*::modulefile:{_module_notloaded_mods $cur}" && ret=0 ;; (avail) _arguments \ '(-l --long)'{-l,--long}'[Display output in long format]' \ '(-t --terse)'{-t,--terse}'[Display output in terse format]' \ '(-j --json)'{-j,--json}'[Display output in JSON format]' \ '(-d --default)'{-d,--default}'[Only show default versions available]' \ '(-L --latest)'{-L,--latest}'[Only show latest versions available]' \ '(-i --icase)'{-i,--icase}'[Case insensitive match]' \ '(-S --starts-with)'{-S,--starts-with}'[Search modules whose name begins with query string]' \ '(-C --contains)'{-C,--contains}'[Search modules whose name contains query string]' \ '--indepth[Perform recursive avail search]' \ '--no-indepth[Perform non-recursive avail search]' \ "*::modulefile:{_module_avail_mods $cur}" && ret=0 ;; (list|savelist) local -a opts; opts=( '-l:Display output in long format' '--long:Display output in long format' '-t:Display output in terse format' '--terse:Display output in terse format' '-j:Display output in JSON format' '--json:Display output in JSON format' ) _describe -t opts 'Switches' opts && ret=0 ;; (clear) _arguments \ '(-f --force)'{-f,--force}'[Skip confirmation dialog]' && ret=0 ;; (restore|save|saveshow|saverm|is-saved) _alternative 'avail-colls:collections:{_module_saved_colls}' \ && ret=0 ;; (rm|del|remove|unload) _arguments \ '--auto[Enable automated module handling mode]' \ '--no-auto[Disable automated module handling mode]' \ '(-f --force)'{-f,--force}'[By-pass dependency consistency]' \ '(-i --icase)'{-i,--icase}'[Case insensitive match]' \ '*::modulefile:_module_loaded_mods' && ret=0 ;; (switch|swap) _arguments \ '--auto[Enable automated module handling mode]' \ '--no-auto[Disable automated module handling mode]' \ '(-f --force)'{-f,--force}'[By-pass dependency consistency]' \ '(-i --icase)'{-i,--icase}'[Case insensitive match]' \ '1:loaded modulefile:_module_loaded_mods' \ "2:modulefile:{_module_notloaded_mods $cur}" && ret=0 ;; (unuse|is-used) _alternative 'used-paths:modulepaths:{_module_used_paths}' \ && ret=0 ;; (use) _arguments \ '(-a --append)'{-a,--append}'[Append directory to MODULEPATH]' \ '(-p --prepend)'{-p,--prepend}'[Prepend directory to MODULEPATH]' \ '*:modulepath:_files -/' && ret=0 ;; (display|help|show|test|path|paths|is-loaded|is-avail|info-loaded) _arguments \ '(-i --icase)'{-i,--icase}'[Case insensitive match]' \ "*::modulefile:{_module_avail_mods $cur}" && ret=0 ;; (whatis) _arguments \ '(-i --icase)'{-i,--icase}'[Case insensitive match]' \ '(-j --json)'{-j,--json}'[Display output in JSON format]' \ "*::modulefile:{_module_avail_mods $cur}" && ret=0 ;; (apropos|keyword|search) _arguments \ '(-j --json)'{-j,--json}'[Display output in JSON format]' \ && ret=0 ;; (append-path|prepend-path) _arguments \ '(-d --delim)'{-d,--delim}'[Path element separator]' \ '--duplicates[Duplicate existing element]' \ && ret=0 ;; (remove-path) _arguments \ '(-d --delim)'{-d,--delim}'[Path element separator]' \ '--index[Remove path element with index]' \ && ret=0 ;; (config) _arguments \ '--dump-state[Report each state value of current Modules execution]' \ '--reset[Unset environment variable relative to configuration key]' \ '1:configuration key:(advanced_version_spec auto_handling avail_indepth collection_pin_version collection_target color colors contact extended_default extra_siteconfig home icase implicit_default locked_configs ml pager rcfile run_quarantine search_match set_shell_startup silent_shell_debug term_background unload_match_order verbosity wa_277)' \ && ret=0 ;; esac ;; esac } _module "$@" # vim:set tabstop=3 shiftwidth=3 expandtab autoindent: