summaryrefslogtreecommitdiff
path: root/completions/svcadm
diff options
context:
space:
mode:
Diffstat (limited to 'completions/svcadm')
-rw-r--r--completions/svcadm71
1 files changed, 39 insertions, 32 deletions
diff --git a/completions/svcadm b/completions/svcadm
index f23af1ff..5269c7be 100644
--- a/completions/svcadm
+++ b/completions/svcadm
@@ -20,14 +20,14 @@
# began to type svc:. In that case we will propose only the complete FMRI beginning with the
# pattern
#
-_smf_complete_fmri ()
+_smf_complete_fmri()
{
local cur="$1" prefix="$2"
local cur_prefix fmri fmri_list=""
local exact_mode pattern
- if [[ "$cur" == $prefix* ]]; then
- [[ "$cur" == $prefix ]] && cur+="/"
+ if [[ $cur == $prefix* ]]; then
+ [[ $cur == "$prefix" ]] && cur+="/"
pattern="$cur*"
exact_mode=1
else
@@ -38,18 +38,21 @@ _smf_complete_fmri ()
for fmri in $(svcs -H -o FMRI "$pattern" 2>/dev/null); do
local fmri_part_list fmri_part
- if [[ -z "$exact_mode" ]]; then
+ if [[ -z $exact_mode ]]; then
fmri=${fmri#$prefix/}
# we generate all possibles abbrevations for the FMRI
# no need to have a generic loop as we will have a finite
# number of components
- local OIFS="$IFS"; IFS="/"; set -- $fmri; IFS="$OIFS"
+ local ifs="$IFS"
+ IFS="/"
+ set -- $fmri
+ IFS=$ifs
case $# in
- 1) fmri_part_list=" $1";;
- 2) fmri_part_list=" $2 $1/$2";;
- 3) fmri_part_list=" $3 $2/$3 $1/$2/$3";;
- 4) fmri_part_list=" $4 $3/$4 $2/$3/$4 $1/$2/$3/$4";;
+ 1) fmri_part_list=" $1" ;;
+ 2) fmri_part_list=" $2 $1/$2" ;;
+ 3) fmri_part_list=" $3 $2/$3 $1/$2/$3" ;;
+ 4) fmri_part_list=" $4 $3/$4 $2/$3/$4 $1/$2/$3/$4" ;;
esac
else
fmri_part_list="$fmri"
@@ -58,28 +61,28 @@ _smf_complete_fmri ()
# Here we make sure the completions begins with the pattern and
# we cut them at the first slash
for fmri_part in $fmri_part_list; do
- [[ "$fmri_part" == $cur* ]] || continue
+ [[ $fmri_part == $cur* ]] || continue
local first_part=${fmri_part#$cur_prefix}
first_part=$cur_prefix${first_part%%/*}
- [[ "$first_part" != "$fmri_part" ]] && first_part+="/"
+ [[ $first_part != "$fmri_part" ]] && first_part+="/"
fmri_list+=" $first_part"
done
done
- COMPREPLY=( $fmri_list )
+ COMPREPLY=($fmri_list)
# here we want to detect if there only one completion proposed and that
# it ends with a slash. That means the users will still have to complete
# after, so we gain him one tab keystroke by immediately proposing the
# next completion alternatives
local i=${#COMPREPLY[*]}
- if [[ $i -gt 0 ]] && [[ "${COMPREPLY[$((--i))]}" == */ ]]; then
+ if [[ $i -gt 0 && ${COMPREPLY[--i]} == */ ]]; then
# we have to iterate through the list as we may have duplicate
- while [[ $i -ne 0 ]]; do
- [[ "${COMPREPLY[$i]}" != "${COMPREPLY[$((i - 1))]}" ]] && break
+ while ((i != 0)); do
+ [[ ${COMPREPLY[i]} != "${COMPREPLY[i - 1]}" ]] && break
((i--))
done
- if [[ $i -eq 0 ]]; then
+ if ((i == 0)); then
_smf_complete_fmri "${COMPREPLY[0]}" "$prefix"
return
fi
@@ -90,12 +93,12 @@ _smf_complete_fmri ()
# it from darcs completion code :)
local colonprefixes=${cur%"${cur##*:}"}
local i=${#COMPREPLY[*]}
- while [ $((--i)) -ge 0 ]; do
- COMPREPLY[$i]=${COMPREPLY[$i]#"$colonprefixes"}
+ while ((i-- > 0)); do
+ COMPREPLY[i]=${COMPREPLY[i]#"$colonprefixes"}
done
}
-_svcadm ()
+_svcadm()
{
local cur prev words cword
_init_completion -n : || return
@@ -103,34 +106,38 @@ _svcadm ()
local command_list="enable disable restart refresh clear mark milestone"
local command i
- for (( i=1; i < $cword; i++ )); do
+ for ((i = 1; i < cword; i++)); do
if [[ ${words[i]} == @(enable|disable|restart|refresh|clear|mark|milestone) ]]; then
command=${words[i]}
fi
done
- if [[ -z "$command" ]]; then
- if [[ ${cur} == -* ]] ; then
- COMPREPLY=( $(compgen -W "-v" -- ${cur}) )
+ if [[ ! -v command ]]; then
+ if [[ ${cur} == -* ]]; then
+ COMPREPLY=($(compgen -W "-v" -- ${cur}))
else
- COMPREPLY=( $(compgen -W "$command_list" -- ${cur}) )
+ COMPREPLY=($(compgen -W "$command_list" -- ${cur}))
fi
else
if [[ ${cur} == -* ]]; then
case "$command" in
enable)
- COMPREPLY=( $(compgen -W "-r -s -t" -- ${cur}) );;
+ COMPREPLY=($(compgen -W "-r -s -t" -- ${cur}))
+ ;;
disable)
- COMPREPLY=( $(compgen -W "-s -t" -- ${cur}) );;
+ COMPREPLY=($(compgen -W "-s -t" -- ${cur}))
+ ;;
mark)
- COMPREPLY=( $(compgen -W "-I -t" -- ${cur}) );;
+ COMPREPLY=($(compgen -W "-I -t" -- ${cur}))
+ ;;
milestone)
- COMPREPLY=( $(compgen -W "-d" -- ${cur}) );;
+ COMPREPLY=($(compgen -W "-d" -- ${cur}))
+ ;;
esac
else
- if [[ "$command" == "mark" ]] && [[ "$prev" != @(degraded|maintenance) ]]; then
- COMPREPLY=( $(compgen -W "degraded maintenance" -- ${cur}) )
- elif [[ "$command" == "milestone" ]]; then
+ if [[ $command == "mark" ]] && [[ $prev != @(degraded|maintenance) ]]; then
+ COMPREPLY=($(compgen -W "degraded maintenance" -- ${cur}))
+ elif [[ $command == "milestone" ]]; then
_smf_complete_fmri "${cur}" "svc:/milestone"
else
_smf_complete_fmri "${cur}" "svc:"
@@ -138,6 +145,6 @@ _svcadm ()
fi
fi
} &&
-complete -F _svcadm svcadm
+ complete -F _svcadm svcadm
# ex: filetype=sh