#!/bin/sh
# $Id: trac.sh,v 3.1.1.2 2015/08/27 10:51:07 asau Exp $
set -e

create () {
   path="$1"
   : ${path:?path required}
   mkdir -p "${path}"
   (echo; echo) | trac-admin "${path}" initenv
   trac-admin "${path}" permission add admin TRAC_ADMIN
   if command -v md5 >/dev/null 2>&1; then
       echo admin::$(printf admin::admin | md5 -q) > "${path}/.passwd"
   else
       echo admin::$(printf admin::admin | md5sum | cut -f1 -d" ") > "${path}/.passwd"
   fi
   # Drop sample settings:
   sqlite3 "${path}"/db/trac.db "delete from milestone"
   sqlite3 "${path}"/db/trac.db "delete from component"
   sqlite3 "${path}"/db/trac.db "delete from version"
}

start () {
   path="$1"
   : ${path:?path required}
   tracd -d --pidfile "${path}/.trac.pid" -s -p 8000 -b localhost -a "*,${path}/.passwd," "${path}"
}

stop () {
   path="$1"
   : ${path:?path required}
   kill $(cat "${path}/.trac.pid")
}

cmd="$1"
shift
case "${cmd}" in
   create) create ${1:+"$@"};;
   start) start ${1:+"$@"};;
   stop) stop ${1:+"$@"};;
esac