#!/bin/sh

case $1 in

create)

mkdir "$PROJECTS_PATH/scm/git/$PROJECT_NAME.git"
cd "$PROJECTS_PATH/scm/git/$PROJECT_NAME.git"
git --bare init > /dev/null
cp hooks/post-update.sample hooks/post-update
git fetch "$PROJECTS_PATH/scm/git-template" master:master > /dev/null
git update-server-info

chown apache2: "$PROJECTS_PATH/scm/git/$PROJECT_NAME.git" -R

cat >> "$PROJECTS_PATH/env/$PROJECT_NAME/conf/trac.ini" << EOF
[components]
tracext.git.* = enabled
[git]
git_bin = /usr/bin/git
EOF

PROJECTS_PATH_ESCAPED=`echo "$PROJECTS_PATH" | sed -e "s|/|\\\\\/|g"`

subst "s/repository_dir =/repository_dir = $PROJECTS_PATH_ESCAPED\/scm\/git\/$PROJECT_NAME.git/g" "$PROJECTS_PATH/env/$PROJECT_NAME/conf/trac.ini"
subst "s/repository_type =/repository_type = git/g" "$PROJECTS_PATH/env/$PROJECT_NAME/conf/trac.ini"

cat > $APACHE_PATH/extra-start.d/101-appliance-trac-scm-git-$PROJECT_NAME.conf << EOF
appliance-trac-scm-git-$PROJECT_NAME=yes
EOF
cat > $APACHE_PATH/extra-available/appliance-trac-scm-git-$PROJECT_NAME.conf << EOF
<Location /appliance-trac/scm/git/$PROJECT_NAME.git>
  AuthName "$PROJECT_NAME : git repo"
  AuthType Basic
  AuthUserFile /var/www/appliance-trac/passwd
  AuthGroupFile /var/www/appliance-trac/group
  Require group $PROJECT_NAME
</Location>
EOF
a2chkconfig > /dev/null
service httpd2 restart > /dev/null

;;

drop)

rm -rf "$PROJECTS_PATH/scm/git/$PROJECT_NAME"

rm -f $APACHE_PATH/extra-start.d/101-appliance-trac-scm-git-$PROJECT_NAME.conf
rm -f $APACHE_PATH/extra-available/appliance-trac-scm-git-$PROJECT_NAME.conf

;;

init-template)

cd /var/www/appliance-trac/scm/git-template
git init
echo initial commit > README
git add .
git commit -a -m 'initial commit'

;;

esac
