|
|
#!/bin/sh # --- SDE-COPYRIGHT-NOTE-BEGIN --- # This copyright note is auto-generated by ./scripts/Create-CopyPatch. # # Filename: lib/init/formats/tail.in # Copyright (C) 2008 The OpenSDE Project # Copyright (C) 2004 - 2006 The T2 SDE Project # # More information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. A copy of the # GNU General Public License can be found in the file COPYING. # --- SDE-COPYRIGHT-NOTE-END ---
# T2 Automated Init Language - Tail # http://wiki.t2-project.org/index.cgi?TailFormat # Alejandro Mery <amery@geeks.cl>
tail_read() { local verbose=1 file= output= query= local query= count=2
if [ "$1" = "-q" ]; then verbose= shift fi
file="$1"; shift while [ $# -gt 1 ]; do query="${query}$1 " shift; (( count++ )) done query="${query}$1\\( \\|\$\\)"
output="$( grep -e "^$query" $file | cut -f$count- )" [ "$verbose" ] && echo "$output"
grep -q -e "^$query" $file }
tail_install() { local style=$1 tailfile="$2" local x= y= z= shift 2
case "$style" in runit) local servicedir=$( echo `eval echo $1` ) local runprefix=
mkdir -vp "$servicedir" rm -f /tmp/tail.$$
# run /tailrun/ options # eval "`tail_read $tailfile tailrun $style`"
# ./env/ # if tail_read -q $tailfile env; then mkdir -p "$servicedir/env" runprefix="$runprefix${runprefix:+ }envdir ./env" tail_read $tailfile env | while read x y; do echo "TAIL: ./env/$x = $y" echo "$y" | rock_substitute > $servicedir/env/$x done fi
# ./run # cat <<-EOT > /tmp/tail.$$ #!/bin/sh exec 2>&1 EOT
if tail_read -q $tailfile input; then echo "exec < $( tail_read $tailfile input )" >> /tmp/tail.$$ fi
if tail_read -q $tailfile user; then runprefix="$runprefix${runprefix:+ }envuidgid $( tail_read $tailfile user )" fi
echo "exec $runprefix${runprefix:+ }$( tail_read $tailfile run )" >> /tmp/tail.$$
rock_substitute /tmp/tail.$$ > $servicedir/run chmod +x $servicedir/run
# ./conffile # for x in `tail_read $tailfile conf | cut -f1 | sort -u`; do y="$x" echo "TAIL: $x ..." if [ "${y%/*}" != "$y" ]; then if [ "${y:0:1}" != "/" ]; then y="$servicedir/$y" fi mkdir -vp ${y%/*} fi rm -vf $y tail_read $tailfile conf $x | rock_substitute > $y done
# ./log/ # if tail_read -q $tailfile log; then mkdir -vp "$servicedir/log/main"
if [ -z "$logdir" ]; then if [ "${localstatedir%$pkg}" != "$localstatedir" ]; then logdir=$localstatedir/log else logdir=$localstatedir/log/$pkg fi fi
z= for x in `tail_read $tailfile log | cut -f1 | sort -u`; do echo "TAIL: ./log/$x" mkdir -vp $root/$logdir/$x chown 9:9 $root/$logdir/$x
ln -vnfs $logdir/$x $servicedir/log/main/
z="$z main/$x"
y="`tail_read $tailfile log $x`" [ "$y" ] && echo "$y" > $root/$logdir/$x/config || true done cat <<-EOT > "$servicedir/log/run" #!/bin/sh exec 2>&1
exec setuidgid log svlogd -t $z EOT chmod +x "$servicedir/log/run" fi
;; *) abort "tail_install: unknown style '$style' for $tailfile." ;; esac }
|