Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 284 lines (256 sloc) 8.272 kb
#!/bin/sh
yawsdir="%yawsdir%"
vardir="%vardir%"
erl="%erl%"
run_erl="%run_erl%"
to_erl="%to_erl%"
case `uname` in
CYGWIN*)
yawsdir=`cygpath -m $yawsdir`
werl="%werl%"
delim=/;;
*)
delim=/
esac
ENV_PGM=`which env`
help()
{
echo "usage: "
echo ""
echo
echo " yaws -i | --interactive -- interactive (no daemon) mode"
echo " yaws -w | --winteractive -- cygwin interactive (werl) "
echo " yaws --daemon -- daemon mode"
echo ""
echo ""
echo " Auxiliary flags for the daemon: "
echo " --id Id -- set system id"
echo " --debug -- debug mode "
echo " --conf File -- set config file"
echo " --tracetraf -- trace traffic"
echo " --tracehttp -- trace http traffic"
echo " --traceout -- trace output to stdout"
echo " --version -- print version"
echo " --pa path -- add load path"
echo " --mnesiadir dir -- start Mnesia in dir"
echo " --proto_dist Mod -- use Mod for distrib"
echo " --sname xxx -- start with sname xxx"
echo " --name xxx -- start with name xxx"
echo " --runmod mod -- call mod:start/0 at startup"
echo " --heart -- auto restart yaws if it crashes"
echo " --erlarg X -- pass argument X to $erl"
echo " --setcookie X -- set an erlang cookie"
echo " --run_erl X -- use run_erl with pipe-id X"
echo " --to_erl X -- connect to pipe-id X"
echo " --disable-kpoll -- pass +K false to erlang"
echo ""
echo "ctl functions ... "
echo " yaws --hup [--id ID] -- hup the daemon, reload conf"
echo " yaws --stop [--id ID] -- stop the daemon "
echo " yaws --debug-dump [--id ID] -- produce a debug dump "
echo " yaws --status [--id ID] -- query the daemon status "
echo " yaws --load Modules -- load modules "
echo " yaws --ls -- list Yaws nodes and their status"
echo " yaws --ctltrace traffic|http -- toggle trace of running daemon"
echo " yaws --check YawsFile [IncDirs] -- test compile File "
echo " yaws --wait-started[=secs] [--id ID] -- wait for daemon to be ready"
exit 1
}
debug="";
daemon="";
interactive="";
trace="";
conf="";
runmod="";
sname="";
heart="";
xpath="";
mnesia="";
id="default";
pdist=""
erlarg=""
kpoll=true
call_wait_started=""
program=$0
wait_started() {
i=0
count=$1
while [ $i -lt $count ]; do
sleep 1
i=`expr $i + 1`
${program} --id ${id} --status 2>&1 > /dev/null
if [ $? = 0 ]; then
exit 0
fi
done
echo "No yaws system responding for id=${id}"
exit 1
}
now=`date -u +%s`
if [ "$HEART" = true ]; then
# we were restarted by heart, make sure we haven't reached our restart count
# if we get 5 restarts within 60 seconds, we exit completely
timediff=`expr $now - $YAWS_HEART_START`
if [ $timediff -le 60 ]; then
if [ $YAWS_HEART_RESTARTS -eq 5 ]; then
echo 5 restarts attempted within 60 seconds, exiting
exit 1
else
# we haven't reached the restart max count yet, but we're still
# within the 60 second window so increment the counter
# but keep the same start time
restarts=`expr $YAWS_HEART_RESTARTS + 1`
starttime=$YAWS_HEART_START
fi
else
# the previous restart was outside our 60 second window,
# so reset both the start time and the restart counter
restarts=1
starttime=$now
fi
else
restarts=1
starttime=$now
fi
HEART_COMMAND="${ENV_PGM} HEART=true YAWS_HEART_RESTARTS=$restarts YAWS_HEART_START=$starttime $program "${1+"$@"}
export HEART_COMMAND
while [ $# -gt 0 ]
do
arg=$1
shift;
case $arg in
-i|--interactive)
interactive="true";
debug=" -yaws debug ";
daemon="";;
-w|--winteractive)
interactive="true";
debug=" -yaws debug ";
daemon="";
erl=$werl;;
-D|--daemon)
daemon=" -detached ";;
--wait-started=*)
call_wait_started=`echo $arg | sed -e 's/--wait-started=//'`;;
--wait-started)
call_wait_started=6;;
-d|--debug)
debug=" -boot start_sasl -yaws debug ";;
-t|--tracetraf)
trace=" -yaws trace traffic ";;
-T|--tracehttp)
trace=" -yaws trace http ";;
-I|--id)
id=$1
shift;;
-x|--traceout)
traceoutput=" -yaws traceoutput ";;
--trace)
traceoutput=" -yaws traceoutput ";
trace=" -yaws trace traffic ";;
-M|--mnesiadir)
mnesia=" -mnesia dir '\"$1\"' -run mnesia start"
shift;;
-c|--conf)
conf=" -conf $1 "
shift;;
-pa|--pa)
xpath=" ${xpath} -pa $1 "
shift;;
-r|--runmod)
runmod=" -runmod $1 "
shift;;
-h|--hup)
ex="$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl hup";;
-s|--stop)
ex="$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl stop";;
-ls|--ls)
ex="$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl ls";;
-S|--status)
ex="$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl status";;
-load|--load)
$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl load ${id} $*
exit 0;;
--debug-dump)
$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl debug_dump ${id}
exit 0;;
-j|--ctltrace)
ex="$erl -noshell -pa ${yawsdir}${delim}ebin -s yaws_ctl trace $1"
shift;;
-v|--version)
exec $erl -noshell -pa ${yawsdir}${delim}ebin -s yaws printversion;
exit 0;;
--sname|-sname)
sname=" -sname $1 "
shift;;
-name|--name)
sname=" -name $1 "
shift;;
--disable-kpoll)
kpoll=false;;
-heart|--heart)
heart=" -heart ";;
-proto_dist|--proto_dist)
pdist=" -proto_dist $1 "
shift;;
-setcookie|--setcookie)
erlarg="$erlarg -setcookie $1 "
shift;;
-erlarg|--erlarg)
erlarg="$erlarg $1 "
shift;;
-check|--check)
mkdir ${HOME}/.yaws/ 2> /dev/null
mkdir ${HOME}/.yaws/${ID} 2> /dev/null
out=`exec $erl -noshell -pa ${yawsdir}${delim}ebin ${xpath} -s yaws_ctl check ${id} $*`
if [ "$?" = "0" ]; then
echo "$out"
echo "$1" ok
exit 0
fi
echo "$out"
exit 1;;
--to_erl)
TO_ERL=yes
PIPE_DIR="${vardir}/run/yaws/pipe/$1"
shift;;
--run_erl)
RUN_ERL=yes
daemon=""
PIPE_DIR="${vardir}/run/yaws/pipe/$1"
LOG_DIR="${vardir}/log/yaws/erlang-log/$1"
shift;;
*)
help
esac
done
[ -n "$call_wait_started" ] && wait_started $call_wait_started
if [ ! -z "${ex}" ]; then
exec ${ex} ${id}
exit 0
fi
if [ -n "$TO_ERL" ]; then
$to_erl $PIPE_DIR/
exit 0
fi
if [ -n "$RUN_ERL" ]; then
if [ ! -d $LOG_DIR ]; then
mkdir -p $LOG_DIR
fi
if [ ! -d $PIPE_DIR ]; then
mkdir -p $PIPE_DIR
fi
RUN_ERL="$run_erl -daemon $PIPE_DIR/ $LOG_DIR"
else
RUN_ERL="eval"
fi
if [ ! -z "${id}" ]; then
id="-yaws id ${id}"
fi
trace="${trace} ${traceoutput}"
[ "$run_erl" = "eval" ] && [ -z "$daemon" ] && [ -z "$interactive" ] && help
XEC="${daemon} ${heart} +K ${kpoll} -pa ${yawsdir}${delim}ebin ${xpath} ${sname} ${pdist} ${erlarg} ${debug} -run yaws ${trace} ${conf} ${runmod} ${mnesia} ${id}"
if [ -z "$heart" ] || [ -z "$daemon" ]; then
unset HEART_COMMAND
fi
${RUN_ERL} "exec $erl $XEC"
Jump to Line
Something went wrong with that request. Please try again.