Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
#!/bin/bash
# a script to make it easier for developers to start multiple CQ instances
# Default Settings
version=5.6.1
root=~/dev/cq
publish=
debug="true"
gui=-gui
vmargs="-Xmx1g -XX:MaxPermSize=256m"
debugport=30303
jmxport=9999
action="start"
function help
{
usage
echo ""
echo "---Actions---"
echo " reset - deletes the contents of the crx-quickstart folder"
echo " start - Starts the specified CQ"
echo " stop - stops the specified CQ instance"
echo ""
echo "---Parameters---"
echo "-v | --version - Sets the CQ version to use, will be a sub-folder of the root folder"
echo "-vm | --vm-args - Arguments passed to the JVM"
echo "-ng | --no-gui - Flag for not starting CQ's GUI"
echo "-nd | --no-debug - Flag for not starting CQ in debug mode"
echo "-h | --help - Displays this message"
}
function resetcq
{
cd $cqdir
echo "Clearing CQ repository at $cqdir"
rm -rf crx-quickstart
echo "Repository successfully cleared"
}
function startcq
{
cqjar=$(ls $cqdir | grep -m 1 ^.*cq.*\.jar$)
cd $cqdir
echo "Clearing logs"
rm -f crx-quickstart/logs/*
mkdir -p crx-quickstart/logs
mkdir -p crx-quickstart/conf
echo "Starting CQ"
echo "Using JAR $cqjar"
if [ "$debug" = "true" ]; then
echo "Using Debug Port $debugport"
echo "Using JMX Port $jmxport"
java -Xdebug $vmargs -Xrunjdwp:transport=dt_socket,server=y,address=$debugport,suspend=n -Dcom.sun.management.jmxremote.port=$jmxport -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar $cqjar $gui -nofork &
echo $! > $cqdir/crx-quickstart/conf/cq.pid
else
java $vmargs -jar $cqjar $gui -nofork &
echo $! > $cqdir/crx-quickstart/conf/cq.pid
fi
}
function stopcq
{
echo "Stopping CQ"
$cqdir/crx-quickstart/bin/stop
echo "CQ Stop Command Issued Successfully"
}
function usage
{
echo "usage: start-cq [start|stop|reset] [-v cq-version] [-r root-path] [-p] [-vm '-Xmx2g'] [-nd]"
}
# Parse the command line arguments from the parameters
while [ "$1" != "" ]; do
case $1 in
-v | --version ) shift
version=$1
;;
-vm | --vm-args ) shift
vmargs=$1
;;
-r | --root ) shift
root=$1
;;
-p | --publish ) publish="1"
;;
-ng | --no-gui ) gui=
;;
-nd | --no-debug ) debug="false"
;;
-h | --help ) help
exit
;;
reset ) action="reset"
;;
start ) action="start"
;;
stop ) action="stop"
;;
* ) usage
exit 1
esac
shift
done
# Perform the actions
if [ "$action" = "start" ]; then
cqdir=$root/$version
startcq
if [ "$publish" = "1" ]; then
ls $root | grep ^$version-publish-.*$ | while read pub
do
debugport=$(expr $debugport + 1)
jmxport=$(expr $jmxport + 1)
cqdir=$root/$pub
startcq
done
fi
elif [ "$action" = "reset" ] ; then
cqdir=$root/$version
resetcq
if [ "$publish" = "1" ]; then
ls $root | grep ^$version-publish-.*$ | while read pub
do
cqdir=$root/$pub
resetcq
done
fi
elif [ "$action" = "stop" ] ; then
cqdir=$root/$version
stopcq
if [ "$publish" = "1" ]; then
ls $root | grep ^$version-publish-.*$ | while read pub
do
cqdir=$root/$pub
stopcq
done
fi
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.