fix bash-completion
This commit is contained in:
55
etc/bash-complete-sunhpc
Normal file
55
etc/bash-complete-sunhpc
Normal file
@@ -0,0 +1,55 @@
|
||||
# sunhpc(1) completion
|
||||
#
|
||||
# /etc/bash_completion.d/sunhpc
|
||||
#
|
||||
|
||||
_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[@]}\")"
|
||||
}
|
||||
|
||||
_sunhpc()
|
||||
{
|
||||
local cur prev words cword i output
|
||||
_init_completion || return
|
||||
|
||||
_sunhpc_array_delete_at words $((cword+1)) ${#words[@]}
|
||||
_sunhpc_array_delete_at words 0
|
||||
|
||||
for i in ${!words[@]}; do
|
||||
words[i]="$(printf '%s' "${words[i]}" | xargs printf '%s\n' 2>/dev/null || true)"
|
||||
done
|
||||
|
||||
if [[ "$cur" =~ ^[[:space:]]+ ]]; then
|
||||
cur=''
|
||||
fi
|
||||
|
||||
output="$(sunhpc report completion ${words[@]} 2>/dev/null)"
|
||||
|
||||
if [ $? = 65 ]; then
|
||||
compopt -o default
|
||||
COMPREPLY=()
|
||||
return 0
|
||||
fi
|
||||
|
||||
#local IFS=$'\n'
|
||||
COMPREPLY=( $( compgen -W '$output' -- ${cur} ) )
|
||||
|
||||
# do not append a space to words that end with =
|
||||
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
||||
|
||||
} &&
|
||||
complete -F _sunhpc sunhpc
|
||||
|
||||
# ex: ts=4 sw=4 et filetype=sh
|
||||
Reference in New Issue
Block a user