#!/sbin/runscript
# Copyright 1999-2005 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

depend() {
    need net
}

opts="${opts} migratewords migratewordsforce"

cd $YACY_HOME

JAVA="$(java-config --java)"

JAVA_ARGS=""
if [ -e DATA/SETTINGS/httpProxy.conf ] ; then
	for i in $(grep javastart DATA/SETTINGS/httpProxy.conf); do
		i="${i#javastart_*=}";
		JAVA_ARGS=-$i" "$JAVA_ARGS;
	done
fi

CLASSPATH=""
test -e lib/ && for N in `ls -1 lib/*.jar`; do CLASSPATH="$CLASSPATH$N:"; done
test -e libx/ && for N in `ls -1 libx/*.jar`; do CLASSPATH="$CLASSPATH$N:"; done
CLASSPATH="-classpath classes:htroot:$CLASSPATH"

if [ -n "${NICENESS}" ] ; then
        NICE="nice -n ${NICENESS}"
fi

start() {
	ebegin "Starting yacy"
	${NICE} sudo -u ${YACY_USER}  ${JAVA} ${JAVA_ARGS} ${JAVA_OPTIONS} ${CLASSPATH} yacy &> /dev/null &
	echo $! > /var/run/yacy.pid
	sleep 1
	ps ax|grep "^ *$(cat /var/run/yacy.pid)" > /dev/null
	eend $?
}

stop() {
	ebegin "Shutting down yacy"
	sudo -u ${YACY_USER} ${JAVA} ${JAVA_ARGS} ${JAVA_OPTIONS} ${CLASSPATH} yacy -shutdown &> /dev/null &
	einfon "Waiting ."
	cnt=0
	while ( ps ax|grep "^ *$(cat /var/run/yacy.pid)" > /dev/null )
	do
		cnt=`expr $cnt + 2`
		if [ $cnt -gt ${WAIT_ON_STOP} ] ; then
			eend 1 "Failed."
			break
		fi
		sleep 2
		echo -n "."
	done
	echo "done."
	rm /var/run/yacy.pid
	eend $?
}

migratewords() {
	if [ -e ${svcdir}/started/yacy ] || [ -e /var/run/yacy.pid ] ; then
		einfo "Is YaCy already running? Stop it before running the word migration."
		einfo "If you are sure it is really stopped run"
		einfo "  '/etc/init.d/yacy migratewordsforce'"
		einfo "to start the migration without other warnings."
		return 1
	else
		migratewordsforce
	fi
}

migratewordsforce() {
	einfo "Migration starts now, all outputs are written to configured logfile too"
	sleep 2
	${NICE} sudo -u ${YACY_USER}  ${JAVA} ${JAVA_ARGS} ${JAVA_OPTIONS} ${CLASSPATH} yacy -migratewords
	return $?
}

status() {
	if service_started "${myservice}" ; then
		if ! ps p `cat /var/run/yacy.pid` &> /dev/null ; then
			eerror "service seems to be down"
			return 1
		fi
	else
		if [ -e /var/run/yacy.pid ]; then
			eerror "service seems to be already running"
			return 1
		fi
		return 0
	fi
}