#! /usr/bin/env bash
#
# Copyright (C) 2010 Igalia S.L. All rights reserved.
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public License
# along with this library; see the file COPYING.LIB.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.

: ${BUILDBOT_CONFIG:=/etc/daemontools-buildbot.conf}

# Read configuration file
[ -r "${BUILDBOT_CONFIG}" ] && . "${BUILDBOT_CONFIG}"

: ${buildbot_user:=${HOME}}
: ${buildbot_log_path:=/var/log/buildbot}

# Expand all "env_*" environment variables
for varname in ${!env_*} ; do
	eval "export ${varname#env_}=\${${varname}}"
done

mkdir -p "${buildbot_log_path}"
chown "${buildbot_user}" "${buildbot_log_path}"

exec /usr/bin/setuidgid "${buildbot_user}" \
     /usr/bin/multilog t "${buildbot_log_path}"

