#!/bin/sh

# check params
if [ -z "$2" ]; then
	echo "Usage : $0 \$PROJECT_NAME \$SCM_TYPE"
	exit 1
fi

export PROJECT_NAME=$1
export SCM_TYPE=$2

export PROJECTS_PATH="/var/www/appliance-trac"
export SCRIPTS_PATH="/usr/share/appliance-trac"

export APACHE_PATH="/etc/httpd2/conf"

# check if project exists
if [ -d "$PROJECTS_PATH/env/$PROJECT_NAME" ]; then
	echo "Project \""$PROJECT_NAME"\" is already exists"
	exit 1
fi

# create trac env
trac-admin "$PROJECTS_PATH/env/$PROJECT_NAME" initenv "$PROJECT_NAME" "sqlite:db/$PROJECT_NAME.db" "" "" > /dev/null
chown apache2: "$PROJECTS_PATH/env/$PROJECT_NAME" -R

# create project group
echo "$PROJECT_NAME:" >> "$PROJECTS_PATH/group"

# create trac env apache conf
cat > $APACHE_PATH/extra-start.d/101-appliance-trac-env-$PROJECT_NAME.conf << EOF
appliance-trac-env-$PROJECT_NAME=yes
EOF
cat > $APACHE_PATH/extra-available/appliance-trac-env-$PROJECT_NAME.conf << EOF
<Location /appliance-trac/env/$PROJECT_NAME>
  AuthName "$PROJECT_NAME : trac env"
  AuthType Basic
  AuthUserFile /var/www/appliance-trac/passwd
  AuthGroupFile /var/www/appliance-trac/group
  Require group $PROJECT_NAME
</Location>
EOF

# init trac env apache conf
a2chkconfig > /dev/null
service httpd2 restart > /dev/null

# create repo
[ -f $SCRIPTS_PATH/scm/$SCM_TYPE ] && . $SCRIPTS_PATH/scm/$SCM_TYPE create

# run additional scripts for trac env
for i in `find $SCRIPTS_PATH/env/ -type f`; do
	. $i
done
