YANZ UPLOAD ANJG

# shellcheck shell=bash # # Bash commandline completion # _module_comgen_words() { local -a words local val # split candidate list on IFS without triggering shell expansion (command # substitution, arithmetic, ...): candidate words may come from module # names read off disk, which must never be treated as executable code IFS=$' \t\n' read -r -d '' -a words <<<"$1" for val in "${words[@]}"; do case "$val" in "$2"*) COMPREPLY[${#COMPREPLY[@]}]="$val" ;; esac done } _module_comgen_words_and_files() { local start=${#COMPREPLY[@]} i _module_comgen_words "$1" "$2" # do not append space to word completed if it is a directory (ends with /) for ((i = start; i < ${#COMPREPLY[@]}; i++)); do if [ "${COMPREPLY[i]: -1:1}" = '/' ]; then # Bash >=4.0 is required for compopt type compopt &>/dev/null && compopt -o nospace break fi done } _module_avail() { local cur="${1:-}" # skip avail call if word currently being completed is an option keyword if [ -z "$cur" ] || [ "${cur:0:1}" != '-' ]; then module avail --color=never -s -t -S --no-indepth -o '' "$cur" 2>&1 fi } _module_savelist() { module savelist --color=never -s -t 2>&1 | sed ' /No named collection\.$/d; /Named collection list$/d; /:$/d;' } _module_stashlist() { module stashlist --color=never -s -t 2>&1 | sed ' /No stash collection\.$/d; /Stash collection list$/d; /:$/d;' } _module_not_yet_loaded() { _module_avail "${1:-}" | sort | sed -E "\%^(${LOADEDMODULES//:/|})$%d" } _module_long_arg_list() { local cur="$1" i if [[ ${COMP_WORDS[COMP_CWORD-2]} == sw* ]] then _module_comgen_words_and_files "$(_module_not_yet_loaded "$cur")" "$cur" return fi for ((i = COMP_CWORD - 1; i > 0; i--)) do case ${COMP_WORDS[$i]} in add|load) _module_comgen_words_and_files "$(_module_not_yet_loaded "$cur")" "$cur" break;; rm|del|remove|unload|switch|swap) _module_comgen_words "${LOADEDMODULES//:/ }" "$cur" break;; esac done } _module() { local cur="$2" prev="$3" cmds opts COMPREPLY=() case "$prev" in add|add-any|load|load-any|try-add|try-load) _module_comgen_words_and_files "--auto --no-auto --force -f --icase -i --tag --tag= $(_module_not_yet_loaded "$cur")" "$cur";; avail) _module_comgen_words_and_files "-a -C -d -i -j -L -l -o -S -t --all --contains --default --icase --json --latest --long --output --output= --starts-with --terse --indepth --no-indepth $(_module_avail "$cur")" "$cur";; edit) _module_comgen_words_and_files "$(_module_avail "$cur")" "$cur";; aliases) COMPREPLY=( $(compgen -W "-a --all" -- "$cur") );; list|savelist) COMPREPLY=( $(compgen -W "-a -j -l -o -t --all --json --long --output --output= --terse" -- "$cur") );; stashlist) COMPREPLY=( $(compgen -W "-j -l -t --json --long --terse" -- "$cur") );; stashpop|stashshow|stashrm) _module_comgen_words "$(_module_stashlist)" "$cur";; clear) COMPREPLY=( $(compgen -W "--force -f" -- "$cur") );; restore|save|saveshow|saverm|is-saved) _module_comgen_words "$(_module_savelist)" "$cur";; rm|del|remove|unload) _module_comgen_words "--auto --no-auto --force -f --icase -i ${LOADEDMODULES//:/ }" "$cur";; switch|swap) _module_comgen_words "--auto --no-auto --force -f --icase -i --tag --tag= ${LOADEDMODULES//:/ }" "$cur";; unuse|is-used) _module_comgen_words "${MODULEPATH//:/ }" "$cur";; use|-a|--append|cachebuild) ;; # let readline handle the completion display|help|show|test|path|paths|is-loaded|info-loaded) _module_comgen_words_and_files "-i --icase $(_module_avail "$cur")" "$cur";; is-avail) _module_comgen_words_and_files "-a -i --all --icase $(_module_avail "$cur")" "$cur";; lint) _module_comgen_words_and_files "-a -i --all --icase $(_module_avail "$cur")" "$cur";; mod-to-sh) _module_comgen_words_and_files "@comp_modtosh_opts@ $(_module_not_yet_loaded "$cur")" "$cur";; whatis) _module_comgen_words_and_files "-a -i -j --all --icase --json $(_module_avail "$cur")" "$cur";; apropos|keyword|search) COMPREPLY=( $(compgen -W "-a -j --all --json" -- "$cur") );; config|--reset) COMPREPLY=( $(compgen -W "--dump-state --reset advanced_version_spec auto_handling avail_indepth avail_output avail_terse_output cache_buffer_bytes cache_expiry_secs collection_pin_version collection_pin_tag collection_target color colors contact editor extended_default extra_siteconfig home icase ignore_cache ignore_user_rc implicit_default implicit_requirement list_output list_terse_output locked_configs mcookie_check mcookie_version_check ml nearly_forbidden_days pager protected_envvars quarantine_support rcfile redirect_output reset_target_state run_quarantine search_match set_shell_startup shells_with_ksh_fpath silent_shell_debug tag_abbrev tag_color_name tcl_linter term_background term_width unload_match_order variant_shortcut verbosity wa_277" -- "$cur") );; -h|--help|-V|--version|purge|refresh|reload|sh-to-mod|source|state|reset|stash|stashclear|cacheclear) ;; append-path|prepend-path) COMPREPLY=( $(compgen -W "-d --delim --duplicates" -- "$cur") );; remove-path) COMPREPLY=( $(compgen -W "-d --delim --index" -- "$cur") );; 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 "-D -h -s -T -v -V -w --debug --help --silent --trace --verbose --version --paginate --no-pager --color --color= --width --width= --ignore-cache --ignore-user-rc" -- "$cur") );; *) COMPREPLY=( $(compgen -W "-D -h -s -T -v -V -w --debug --help --silent --trace --verbose --version --paginate --no-pager --color --color= --width --width= --ignore-cache --ignore-user-rc add add-any apropos aliases avail append-path cachebuild cacheclear clear config del display edit help initadd initclear initlist initprepend initrm is-loaded is-saved is-used is-avail info-loaded keyword lint list load load-any mod-to-sh path paths purge prepend-path refresh reload reset restore rm remove remove-path save savelist saveshow saverm search show sh-to-mod source stash stashclear stashlist stashpop stashrm stashshow state swap switch test try-add try-load unload unuse use whatis" -- "$cur") );; esac fi;; esac } # define completion for ml command if command exists if $(type -t ml >/dev/null); then _ml() { local cur="$2" prev="$3" cmds opts COMPREPLY=() case "$prev" in add|add-any|load|load-any|try-add|try-load) _module_comgen_words_and_files "--auto --no-auto --force -f --icase -i --tag --tag= $(_module_not_yet_loaded "$cur")" "$cur";; avail) _module_comgen_words_and_files "-a -C -d -i -j -L -l -o -S -t --all --contains --default --icase --json --latest --long --output --output= --starts-with --terse --indepth --no-indepth $(_module_avail "$cur")" "$cur";; edit) _module_comgen_words_and_files "$(_module_avail "$cur")" "$cur";; aliases) COMPREPLY=( $(compgen -W "-a --all" -- "$cur") );; list|savelist) COMPREPLY=( $(compgen -W "-a -j -l -o -t --all --json --long --output --output= --terse" -- "$cur") );; stashlist) COMPREPLY=( $(compgen -W "-j -l -t --json --long --terse" -- "$cur") );; stashpop|stashshow|stashrm) _module_comgen_words "$(_module_stashlist)" "$cur";; clear) COMPREPLY=( $(compgen -W "--force -f" -- "$cur") );; restore|save|saveshow|saverm|is-saved) _module_comgen_words "$(_module_savelist)" "$cur";; rm|del|remove|unload) _module_comgen_words "--auto --no-auto --force -f --icase -i ${LOADEDMODULES//:/ }" "$cur";; switch|swap) _module_comgen_words "--auto --no-auto --force -f --icase -i --tag --tag= ${LOADEDMODULES//:/ }" "$cur";; unuse|is-used) _module_comgen_words "${MODULEPATH//:/ }" "$cur";; use|-a|--append|cachebuild) ;; # let readline handle the completion display|help|show|test|path|paths|is-loaded|info-loaded) _module_comgen_words_and_files "-i --icase $(_module_avail "$cur")" "$cur";; is-avail) _module_comgen_words_and_files "-a -i --all --icase $(_module_avail "$cur")" "$cur";; lint) _module_comgen_words_and_files "-a -i --all --icase $(_module_avail "$cur")" "$cur";; mod-to-sh) _module_comgen_words_and_files "@comp_modtosh_opts@ $(_module_not_yet_loaded "$cur")" "$cur";; whatis) _module_comgen_words_and_files "-a -i -j --all --icase --json $(_module_avail "$cur")" "$cur";; apropos|keyword|search) COMPREPLY=( $(compgen -W "-a -j --all --json" -- "$cur") );; config|--reset) COMPREPLY=( $(compgen -W "--dump-state --reset advanced_version_spec auto_handling avail_indepth avail_output avail_terse_output cache_buffer_bytes cache_expiry_secs collection_pin_version collection_pin_tag collection_target color colors contact editor extended_default extra_siteconfig home icase ignore_cache ignore_user_rc implicit_default implicit_requirement list_output list_terse_output locked_configs mcookie_check mcookie_version_check ml nearly_forbidden_days pager protected_envvars quarantine_support rcfile redirect_output reset_target_state run_quarantine search_match set_shell_startup shells_with_ksh_fpath silent_shell_debug tag_abbrev tag_color_name tcl_linter term_background term_width unload_match_order variant_shortcut verbosity wa_277" -- "$cur") );; -h|--help|-V|--version|purge|refresh|reload|sh-to-mod|source|state|reset|stash|stashclear|cacheclear) ;; append-path|prepend-path) COMPREPLY=( $(compgen -W "-d --delim --duplicates" -- "$cur") );; remove-path) COMPREPLY=( $(compgen -W "-d --delim --index" -- "$cur") );; 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 "-D -h -s -T -v -V -w --debug --help --silent --trace --verbose --version --paginate --no-pager --color --color= --width --width= --ignore-cache --ignore-user-rc" -- "$cur") ) loaded_modules="" for i in ${LOADEDMODULES//:/ }; do loaded_modules+="-${i} " done _module_comgen_words "--auto --no-auto --force -f --icase -i --tag --tag= $loaded_modules" "$cur";; *) _module_comgen_words_and_files "--auto --no-auto --force -f --icase -i --tag --tag= $(_module_not_yet_loaded "$cur")" "$cur" COMPREPLY=( "${COMPREPLY[@]}" $(compgen -W "-D -h -s -T -v -V -w --debug --help --silent --trace --verbose --version --paginate --no-pager --color --color= --width --width= --ignore-cache --ignore-user-rc add add-any apropos aliases avail append-path cachebuild cacheclear clear config del display edit help initadd initclear initlist initprepend initrm is-loaded is-saved is-used is-avail info-loaded keyword lint list load load-any mod-to-sh path paths purge prepend-path refresh reload reset restore rm remove remove-path save savelist saveshow saverm search show sh-to-mod source stash stashclear stashlist stashpop stashrm stashshow state swap switch test try-add try-load unload unuse use whatis" -- "$cur") ) loaded_modules="" for i in ${LOADEDMODULES//:/ }; do loaded_modules+="-${i} " done _module_comgen_words "--auto --no-auto --force -f --icase -i --tag --tag= $loaded_modules" "$cur";; esac fi;; esac } complete -o default -F _ml ml fi complete -o default -F _module module