Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2014-03-26 19:43:40 +0400
committerBadlop <badlop@process-one.net>2014-03-26 19:43:56 +0400
commit5bf3c784da68e4fa58cde0105a9e13f5b6651e31 (patch)
tree3b38922a82eeb84a45ae621c299fd997738ee6de /tools
parenta5a065290b51e3f6b3f7b6f47241a979631e5a25 (diff)
New Bash completion script for ejabberdctl, experimental (EJAB-1042)
Diffstat (limited to 'tools')
-rw-r--r--tools/ejabberdctl.bc99
1 files changed, 99 insertions, 0 deletions
diff --git a/tools/ejabberdctl.bc b/tools/ejabberdctl.bc
new file mode 100644
index 000000000..72a5356f2
--- /dev/null
+++ b/tools/ejabberdctl.bc
@@ -0,0 +1,99 @@
+#
+# bash completion for ejabberdctl
+#
+get_help()
+{
+ local COMMANDCACHE=/var/log/ejabberd/bash_completion_$RANDOM
+ ejabberdctl $CTLARGS help >$COMMANDCACHE
+ if [[ $? == 2 ]] ; then
+ ISRUNNING=1
+ runningcommands=`cat $COMMANDCACHE | grep "^ [a-z]" | awk '{print $1}' | xargs`
+ fi
+ rm $COMMANDCACHE
+}
+
+_ejabberdctl()
+{
+ local cur prev
+ local ISRUNNING=0
+ local runningcommands
+
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ local startcoms="start debug live"
+ local startpars="--config-dir --config --ctl-config --logs --spool"
+
+ local i=1
+ local CTLARGS=""
+ while [ $i -lt $COMP_CWORD ] ; do
+ local PARAM="${COMP_WORDS[i]}"
+ i=$((i+1))
+ case $PARAM in
+ --*)
+ CTLARGS="--node ${COMP_WORDS[i]}"
+ i=$((i+1)) ;;
+ *) break ;;
+ esac
+ done
+
+ case "${prev##*/}" in
+ ejabberdctl)
+ # This clause matches even when calling `/sbin/ejabberdctl` thanks to the ##*/ in the case
+ get_help
+ COMPREPLY=($(compgen -W "--node --auth ${startpars} ${startcoms} ${runningcommands}" -- $cur))
+ return 0
+ ;;
+ start|live)
+ COMPREPLY=($(compgen -W "--node ${startpars}" -- $cur))
+ return 0
+ ;;
+ debug)
+ COMPREPLY=($(compgen -W "--node" -- $cur))
+ return 0
+ ;;
+ help)
+ get_help
+ COMPREPLY=($(compgen -W "${runningcommands}" -- $cur))
+ return 0
+ ;;
+ --node)
+ RUNNINGNODES=`epmd -names | grep name | awk '{print $2"@localhost"}' | xargs`
+ COMPREPLY=($(compgen -W "$RUNNINGNODES" -- $cur))
+ return 0
+ ;;
+ --config|--ctl-config)
+ _filedir '?(u)cfg'
+ return 0
+ ;;
+ --config-dir|--logs|--spool)
+ _filedir
+ return 0
+ ;;
+ *)
+ prev2="${COMP_WORDS[COMP_CWORD-2]}"
+ get_help
+ if [[ "$prev2" == --* ]]; then
+ COMPREPLY=($(compgen -W "--node --auth ${startpars} ${startcoms} ${runningcommands}" -- $cur))
+ else
+ if [[ $ISRUNNING == 1 ]]; then
+ echo ""
+ ejabberdctl $CTLARGS help ${PARAM}
+ echo -n "${COMP_LINE}"
+ fi
+ fi
+ return 0
+ ;;
+ esac
+}
+
+complete -F _ejabberdctl ejabberdctl
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh