aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rw-r--r--tools/configure.erl9
-rw-r--r--tools/ejabberdctl.bc99
-rw-r--r--tools/p1_prof.erl9
3 files changed, 107 insertions, 10 deletions
diff --git a/tools/configure.erl b/tools/configure.erl
index 6f0b1dd4e..bc0f87eb7 100644
--- a/tools/configure.erl
+++ b/tools/configure.erl
@@ -5,7 +5,7 @@
%%% Created : 27 Jan 2003 by Alexey Shchepin <alexey@process-one.net>
%%%
%%%
-%%% ejabberd, Copyright (C) 2002-2013 ProcessOne
+%%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -17,10 +17,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
-%%% You should have received a copy of the GNU General Public License
-%%% along with this program; if not, write to the Free Software
-%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-%%% 02111-1307 USA
+%%% You should have received a copy of the GNU General Public License along
+%%% with this program; if not, write to the Free Software Foundation, Inc.,
+%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%----------------------------------------------------------------------
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
diff --git a/tools/p1_prof.erl b/tools/p1_prof.erl
index d73f06f05..c085f64fc 100644
--- a/tools/p1_prof.erl
+++ b/tools/p1_prof.erl
@@ -6,7 +6,7 @@
%%% Created : 23 Jan 2010 by Evgeniy Khramtsov <ekhramtsov@process-one.net>
%%%
%%%
-%%% ejabberd, Copyright (C) 2002-2013 ProcessOne
+%%% ejabberd, Copyright (C) 2002-2014 ProcessOne
%%%
%%% This program is free software; you can redistribute it and/or
%%% modify it under the terms of the GNU General Public License as
@@ -18,10 +18,9 @@
%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
%%% General Public License for more details.
%%%
-%%% You should have received a copy of the GNU General Public License
-%%% along with this program; if not, write to the Free Software
-%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-%%% 02111-1307 USA
+%%% You should have received a copy of the GNU General Public License along
+%%% with this program; if not, write to the Free Software Foundation, Inc.,
+%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
%%%
%%%-------------------------------------------------------------------
-module(p1_prof).