Add tab-completion to debian nodetool packaging

patch by Cyril Scetbon; reviewed by mshuler for CASSANDRA-6421
This commit is contained in:
Jonathan Ellis 2014-05-21 17:23:33 -05:00
parent a3effe6698
commit 0fdf2ddbf0
4 changed files with 227 additions and 0 deletions

View File

@ -1,4 +1,5 @@
2.1.0-rc1 2.1.0-rc1
* Add tab-completion to debian nodetool packaging (CASSANDRA-6421)
* Change concurrent_compactors defaults (CASSANDRA-7139) * Change concurrent_compactors defaults (CASSANDRA-7139)
* Add PowerShell Windows launch scripts (CASSANDRA-7001) * Add PowerShell Windows launch scripts (CASSANDRA-7001)
* Make commitlog archive+restore more robust (CASSANDRA-6974) * Make commitlog archive+restore more robust (CASSANDRA-6974)

1
debian/cassandra.bash-completion vendored Normal file
View File

@ -0,0 +1 @@
debian/nodetool-completion nodetool

224
debian/nodetool-completion vendored Normal file
View File

@ -0,0 +1,224 @@
have nodetool && have cqlsh &&
{
show_keyspaces()
{
local ks=$(get_keyspaces)
COMPREPLY=( $(compgen -W "$ks" -- "$1") )
}
get_keyspaces()
{
[ -z "$keyspaces" ] && keyspaces=$(echo "DESCRIBE KEYSPACES" | cqlsh | egrep -v '^$')
echo $keyspaces
}
show_datacenters()
{
cur=$1
set|grep -q ^dcs || dcs=$(echo "select data_center from system.peers;"|cqlsh |tail -n +4|sort|uniq|awk '{if(length($1)>1) print $1}'|xargs)
COMPREPLY=( $(compgen -W "$dcs" -- "$cur") )
}
show_cfs()
{
local cur prev cfs
prev=$1
cur=$2
cfs=$(get_cfs $1 $2)
COMPREPLY=( $(compgen -W "$cfs" -- "$cur") )
}
get_cfs()
{
local prev
prev=$1
[ -z "${cf[$prev]}" ] && cf[$prev]=$(echo "DESCRIBE COLUMNFAMILIES" | cqlsh -k ${prev} | egrep -v '^$')
echo ${cf[$prev]}
}
show_last_cfs()
{
local cur cfs re
cur=$1
re=$(echo ${COMP_WORDS[@]:3:$(($COMP_CWORD - 3))} | sed -e 's/ /\\|/g')
cfs=$(get_cfs ${COMP_WORDS[2]} | sed -e "s/$re//g")
COMPREPLY=( $(compgen -W "$cfs" -- "${cur}") )
}
_nodetool()
{
local cur prev ks
COMPREPLY=()
_get_comp_words_by_ref cur prev
local shopt='
cfstats
compactionstats
compactionhistory
decommission
describecluster
disablebackup
disablebinary
disablegossip
disablehandoff
disablethrift
drain
enablebackup
enablebinary
enablegossip
enablehandoff
enablethrift
getcompactionthroughput
getlogginglevels
getstreamthroughput
gossipinfo
help
invalidatecountercache
invalidatekeycache
invalidaterowcache
join
listsnapshots
pausehandoff
proxyhistograms
rangekeysample
reloadtriggers
resetlocalschema
resumehandoff
ring
setlogginglevel
status
statusbinary
statusthrift
stopdaemon
tpstats
version
'
local lngopt='
cfhistograms
cleanup
clearsnapshot
compact
describering
disableautocompaction
enableautocompaction
flush
getcompactionthreshold
getendpoints
getsstables
info
move
netstats
rebuild
rebuild_index
refresh
removenode
repair
scrub
setcachecapacity
setcachekeystosave
setcompactionthreshold
setcompactionthroughput
setstreamthroughput
settraceprobability
snapshot
stop
taketoken
truncatehints
upgradesstables
'
local optwks='
cfhistograms
cleanup
clearsnapshot
compact
describering
flush
getcompactionthreshold
getendpoints
getsstables
rebuild_index
refresh
repair
scrub
setcompactionthreshold
snapshot
'
local optwcfs='
cleanup
compact
disableautocompaction
enableautocompaction
flush
repair
scrub
upgradesstables
'
if [[ $COMP_CWORD -eq 1 ]] ; then
COMPREPLY=( $(compgen -W "${lngopt} ${shopt}" -- "${cur}") )
elif [[ $(echo "${lngopt}"|egrep -c "\b${prev}\b") -gt 0 ]] ; then
if echo $optwks|grep -q "\b$prev\b" ; then
show_keyspaces "${cur}"
else
case "${prev}" in
removenode)
# we don't want to lose time using nodetool status a 2nd time
# in case of force or status
if [[ "${cur}" =~ ^(f|s) ]] ; then
COMPREPLY=( $(compgen -W "status force" -- "${cur}") )
else
[ -z "$IDS" ] && IDS=$(nodetool status|grep %|awk '{print $7}'|xargs)
COMPREPLY=( $(compgen -W "status force $IDS" -- "${cur}") )
fi
return 0
;;
stop)
COMPREPLY=( $(compgen -W "COMPACTION VALIDATION CLEANUP SCRUB INDEX_BUILD" -- "${cur}") )
return 0
;;
info)
COMPREPLY=( $(compgen -W "-T --tokens" -- "${cur}") )
return 0
;;
rebuild)
show_datacenters "${cur}"
return 0
;;
upgradesstables)
ks=$(get_keyspaces)
COMPREPLY=( $(compgen -W "-a --include-all-sstables $ks" -- "${cur}") )
return 0
;;
esac
fi
elif [[ $COMP_CWORD -eq 3 ]] ; then
case "${COMP_WORDS[1]}" in
cfhistograms|cleanup|compact|flush|getcompactionthreshold|getendpoints|getsstables|rebuild_index|refresh|repair|scrub|setcompactionthreshold)
show_cfs ${prev} ${cur}
return 0
;;
upgradesstables)
if [[ ! ${prev} == -* ]]; then
show_cfs ${prev} ${cur}
fi
return 0
;;
snapshot)
COMPREPLY=( $(compgen -W "-cf" -- "${cur}") )
return 0
;;
esac
elif [[ "${optwcfs}" == *${COMP_WORDS[1]}* ]] ; then
show_last_cfs ${cur}
elif [[ $COMP_CWORD -eq 4 && ${COMP_WORDS[1]} == "snapshot" ]] ; then
show_cfs ${COMP_WORDS[2]} ${cur}
elif [[ $COMP_CWORD -eq 5 && ${COMP_WORDS[1]} == "snapshot" ]] ; then
COMPREPLY=( $(compgen -W "-t" -- "${cur}") )
fi
}
complete -F _nodetool nodetool
}

1
debian/rules vendored
View File

@ -63,6 +63,7 @@ binary-indep: build install
dh_installchangelogs dh_installchangelogs
dh_installinit -u'start 50 2 3 4 5 . stop 50 0 1 6 .' dh_installinit -u'start 50 2 3 4 5 . stop 50 0 1 6 .'
dh_installdocs README.asc CHANGES.txt NEWS.txt dh_installdocs README.asc CHANGES.txt NEWS.txt
dh_bash-completion
dh_compress dh_compress
dh_fixperms dh_fixperms
dh_installdeb dh_installdeb