blob: f5d7d5c9dbaac235b099a9a2432c4445298de316 [file] [edit]
# sqlhist completion
# use the library tracefs_sql() completion
thisdir=`dirname $BASH_SOURCE`
if [ -e $thisdir/tracefs_sql.bash ]; then
. $thisdir/tracefs_sql.bash
elif [ -e $thisdir/../src/tracefs_sql.bash ]; then
. $thisdir/../src/tracefs_sql.bash
else
tracefs_sql_completion()
{
return
}
fi
found_select()
{
local words=("$@")
local i=$COMP_CWORD
while [ $i -gt 0 ]; do
let i=$i-1
local w=$(echo ${words[$i]} | tr A-Z a-z)
if [ $w == "select" ]; then
return 0
fi
done
return 1
}
_sqlhist_complete()
{
local cur=""
local prev=""
local words=()
# Not to use COMP_WORDS to avoid buggy behavior of Bash when
# handling with words including ":", like:
#
# prev="${COMP_WORDS[COMP_CWORD-1]}"
# cur="${COMP_WORDS[COMP_CWORD]}"
#
# Instead, we use _get_comp_words_by_ref() magic.
_get_comp_words_by_ref -n : cur prev words
if `found_select ${words[@]}` ; then
tracefs_sql_completion "$prev" "$cur" ${words[@]}
return
fi
local cmds=$(sqlhist -h 2>&1 | \
grep '^ *-' | sed -e 's/^ *\(-[^ ]*\).*/\1/')
COMPREPLY=( $(compgen -W "${cmds} SELECT" -- "${cur}") )
if [ ${#COMPREPLY[@]} -eq 0 ]; then
local w="select"
if [ "$w" != "${w##$cur}" ]; then
COMPREPLY=("$w")
fi
fi
}
complete -F _sqlhist_complete sqlhist