#!/bin/sh
# Get and install the latest monit version from CVS
#set -vx
help() {
cat << ENDTEXT
Usage: `basename $0` [-h] installdir
This script will download and build the latest monit from CVS and install
monit in 'installdir'.
ENDTEXT
}
merror() {
echo $1;
cd /tmp && rm -rf $builddir;
exit 1;
}
# Trap for cleanup
trap 'merror "Aborted";' TERM INT
case $# in
1) installdir=$1;;
*) help; exit 1;;
esac
while getopts "h" c
do
case $c in
h) help;
exit 0;;
esac
done
# Do we have write permissions in installdir?
if [ ! -d $installdir ]
then
echo "Error, '$installdir' is not a directory"
exit 1;
fi
if [ ! -w $installdir ]
then
echo "Error, cannot write to $installdir -- no permission"
exit 1;
fi
# Be quiet
exec 2>/dev/null
# Build in /tmp
builddir=$$_monit
cd /tmp && mkdir $builddir && cd 1>/dev/null $builddir || { echo "Error creating build dir [/tmp/$builddir]"; exit 1; }
# Get cvs version
echo "Downloading monit from CVS, please wait.."
export CVS_RSH=ssh
cvs -Q -z3 -d:ext:anoncvs@savannah.nongnu.org:/cvsroot/monit co monit || merror "Error downloading from CVS"
cd 1>/dev/null monit
echo "Succeded downloading monit"
# Build
echo "Building monit, please wait.."
./autogen.sh 1>&2 || merror "Error configuring monit"
make 1>&2 || merror "Error building monit"
echo "Succeeded building monit"
# Install
echo "-------------------------------------------------------------------------------"
VERSION=`perl -ne 'if(/AC_INIT.*\[(\w)([\.\w]+)(\-\w+)?\]/){print"$1$2$3\n";}' configure.ac`
echo -n "Install monit version $VERSION? [y|n]? [y]"
read variable <&1
if [ "xn" = "x$variable" ]
then
merror "Install aborted"
fi
cp monit $installdir || merror "Error installing monit"
chmod 755 $installdir/monit || merror "Error, cannot set $installdir/monit as executable"
echo "Succeded installing monit at $installdir/monit"
# Remove build dir
cd /tmp && rm -rf $builddir;
syntax highlighted by Code2HTML, v. 0.9.1