diff options
author | xiubuzhe <xiubuzhe@sina.com> | 2023-10-15 23:51:49 +0800 |
---|---|---|
committer | xiubuzhe <xiubuzhe@sina.com> | 2023-10-15 23:51:49 +0800 |
commit | 6cb42d6b8d889a832c19b6e0f58d29af78009d99 (patch) | |
tree | ffcfd95f189b324cfe149b152612ea64551ecf4e /sbin/sunhpc-completion-backup | |
parent | 98fae3427e6791003e64572a2a6ca317c72473ef (diff) | |
download | sunhpc-6cb42d6b8d889a832c19b6e0f58d29af78009d99.tar.gz sunhpc-6cb42d6b8d889a832c19b6e0f58d29af78009d99.tar.bz2 sunhpc-6cb42d6b8d889a832c19b6e0f58d29af78009d99.zip |
add bash-complete scripts
Diffstat (limited to 'sbin/sunhpc-completion-backup')
-rw-r--r-- | sbin/sunhpc-completion-backup | 219 |
1 files changed, 35 insertions, 184 deletions
diff --git a/sbin/sunhpc-completion-backup b/sbin/sunhpc-completion-backup index 82752d6..8eb4f1e 100644 --- a/sbin/sunhpc-completion-backup +++ b/sbin/sunhpc-completion-backup @@ -1,198 +1,49 @@ -#/usr/bin/env bash -_sunhpc() -{ - local cur prev words cword split - _init_completion -s || return - - COMPREPLY=() - _get_comp_words_by_ref -n : cur prev words - - # Command data: Main commands - cmds='add build check create database list pxelinux repair report run set soft' - - # sunhpc add commands - cmds_add='host security' - cmds_add_host='interface security cpus= membership= os= rack= rank= help' - cmds_add_host_interface='ip= mac= name= subnet= help' - cmds_add_host_security='force= help' - cmds_add_security='force= help' - - - # sunhpc build commands - cmds_build='init initializes' - cmds_build_init='help' - cmds_build_initializes='help' - - - # sunhpc check commands - cmds_check='services help' - cmds_check_services='help' - - # sunhpc create commands - cmds_create='distro pxelinux repos roll rpm security xml help' - cmds_create_distro='arch= dist= md5= rolls= root= version= help' - - # sunhpc create pxelinux commands - cmds_create_pxelinux='client efiboot kickstart product squashfs updates vminitrd' - cmds_create_pxelinux_client='basedir= outdir= version= help' - cmds_create_pxelinux_efiboot='basedir= outdir= cdrom= version= help' - cmds_create_pxelinux_kickstart='basedir= outdir= version= help' - cmds_create_pxelinux_product='basedir= outdir= version= help' - cmds_create_pxelinux_squashfs='basedir= outdir= cdrom= version= help' - cmds_create_pxelinux_updates='basedir= outdir= cdrom= version= help' - cmds_create_pxelinux_vminitrd='basedir= outdir= cdrom= version= help' - - # sunhpc create repos commands - cmds_create_repos='file= gpk= web= help' - - # sunhpc create roll commands - cmds_create_roll='boot= sign= help' - - # sunhpc create rpm commands - cmds_create_rpm='arch= name= outdir= prefix= release= source= spec= version= help' - - # sunhpc create security commands - cmds_create_security='sshd users keyname= force= help' - cmds_create_security_sshd='help' - cmds_create_security_users=' safedir= help' - - # sunhpc create xml commands - cmds_create_xml=' arch= bin= boot= flag= name= os= release= rolls= src= version= help' - - # sunhpc database commands - cmds_database='init help' - cmds_database_init='help' - - # sunhpc list commands - cmds_list='host license help' - cmds_list_host='interface help' - cmds_list_host_interface='help' - cmds_list_license='help' - - # sunhpc pxelinux commands - cmds_pxelinux='build help' - cmds_pxelinux_build='autofs dhcpd httpd nodes tftpd clean= iso= mnt= pxesrv= help' - cmds_pxelinux_build_autofs='quiet= help' - cmds_pxelinux_build_dhcpd='quiet= help' - cmds_pxelinux_build_httpd='pxedir= quiet= help' - cmds_pxelinux_build_nodes='quiet= help' - cmds_pxelinux_build_tftpd='pxedir= quiet= help' - - # sunhpc repair commands - cmds_repair='permission users help' - cmds_repair_permission='help' - cmds_repair_users='authorized help' - cmds_repair_users_authorized='all= help' - - # sunhpc report commands - cmds_report='distro host kickstart knownhosts nextip yumrepos help' - cmds_report_distro='help' - cmds_report_host='attr dhcpd help' - cmds_report_host_attr='attr= pydict= help' - cmds_report_host_dhcpd='help' - cmds_report_kickstart='help' - cmds_report_knownhosts='help' - cmds_report_nextip='baseip= increment= help' - cmds_report_yumrepos='proto= url= help' - - # sunhpc run commands - cmds_run='host help' - cmds_run_host='collate= command= delay= managed= num-threads= stats= timeout= x11= help' - - # sunhpc set commands - cmds_set='grub host help' - cmds_set_grub='default= help' - cmds_set_host='boot cpus interface help' - cmds_set_host_boot='action= help' - cmds_set_host_cpus='cpus= help' - cmds_set_host_interface='iface ip mac name subnet help' - cmds_set_host_interface_iface='iface= mac= help' - cmds_set_host_interface_ip='iface= ip= help' - cmds_set_host_interface_mac='iface= mac= help' - cmds_set_host_interface_name='iface= name= help' - cmds_set_host_interface_subnet='iface= subnet= help' - - # sunhpc soft commands - cmds_soft='autodock cmake gaussian gromacs mpi ntfs nvidia openmpi schrodinger help' - cmds_soft_autodock='envs= prefix= source= help' - cmds_soft_cmake='envs= prefix= source= help' - cmds_soft_gaussian='envs= prefix= source= help' - cmds_soft_gromacs='envs= prefix= source= help' - cmds_soft_mpi='envs= prefix= source= help' - cmds_soft_ntfs='envs= prefix= source= help' - cmds_soft_nvidia='envs= prefix= source= help' - cmds_soft_openmpi='envs= prefix= source= help' - cmds_soft_schrodinger='envs= prefix= source= help' - - # sunhpc sync commands - cmds_sync='config users help' - cmds_sync_config='help' - cmds_sync_users='help' - - # sunhpc help commands. - cmds_help='help' - +# sunhpc(1) completion - cmd="" - words[0]="" - completed="${cmds}" - - for var in "${words[@]:1}" - do - if [[ ${var} == -* ]] ; then - break - fi - - if [ -z "${cmd}" ] ; then - proposed="${var}" - else - proposed="${cmd}_${var}" +_sunhpc_array_delete_at() +{ + eval "local ARRAY=(\"\${$1[@]}\")" + local i + local tmp=() + local lower=$2 + local upper=${3:-$lower} + + for i in "${!ARRAY[@]}"; do + if [[ "$i" -lt "$2" || "$i" -gt "${3-$2}" ]]; then + tmp=("${tmp[@]}" "${ARRAY[$i]}") fi + done + eval "$1=(\"\${tmp[@]}\")" +} - local i="cmds_${proposed}" - local comp="${!i}" - if [ -z "${comp}" ] ; then - break - fi +_sunhpc() +{ + local cur prev words cword i output + _init_completion || return - if [[ ${comp} == -* ]] ; then - if [[ ${cur} != -* ]] ; then - completed="" - break - fi - fi + _sunhpc_array_delete_at words $((cword+1)) ${#words[@]} + _sunhpc_array_delete_at words 0 - cmd="${proposed}" - completed="${comp}" + for i in ${!words[@]}; do + words[i]="$(printf '%s' "${words[i]}" | xargs printf '%s\n' 2>/dev/null || true)" done - if [ -z "${completed}" ] ; then - COMPREPLY=( $(compgen -f -- "$cur" ) $( compgen -d -- "$cur" ) ) - else - COMPREPLY=( $(compgen -W "${completed}" -- "${cur}") ) + if [[ "$cur" =~ ^[[:space:]]+ ]]; then + cur='' fi - # do not append a space to words that end with = - #[[ $COMPREPLY == *= ]] && compopt -o nospace - [[ $COMPREPLY == *= ]] && compopt -o nospace || compopt -o dirnames + output="$(sunhpc report completion ${words[@]} 2>/dev/null)" + + if [ $? = 65 ]; then + compopt -o default + COMPREPLY=() + return 0 + fi - #_available_interfaces + local IFS=$'\n' + COMPREPLY=( $( compgen -W '$output' -- $cur ) ) } && complete -F _sunhpc sunhpc - - - - - - - - - - - - - - - +# ex: ts=4 sw=4 et filetype=sh |