#!/bin/bash

# Check usage
if [ $# -ne 2 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
    echo "Usage: $1site PROJECT_BRANCH_PATH\n"
    echo -n "'$1site' part of makesite scripts. "
    case $1 in
        install )
            echo "Activate install hooks for target project. Run tests for master branch wich option --autotest." ;;
        remove )
            echo "Activate remove hooks for target project and remove project dir." ;;
        update )
            echo "Activate update hooks for target project. Run tests for master branch wich option --autotest." ;;
        test )
            echo "Activate test hooks for target project. Enable test only master branch wich option --auto." ;;
    esac
    makesite --version
    exit 0
fi

PROJECT_DIR=$1
ACTION=$2

TEMPLATE_FILE=$PROJECT_DIR/.makesite
SERVICE_DIR=$PROJECT_DIR/service
SOURCE_DIR=$PROJECT_DIR/source

if [ ! -z "$VIRTUAL_ENV" ]; then
    echo "Please deactivate VIRTUALENV '$VIRTUAL_ENV' first." && exit 1
fi

if [ ! -f $TEMPLATE_FILE ]; then
    echo "makesite not found templates in '$PROJECT_DIR'." && exit 1
fi

# BSFL
RED="tput -T xterm setaf 1"
DEFAULT="tput -T xterm sgr0"
LOG_FILE=/tmp/makesite.log

msg () {
    MESSAGE="$1"
    $RED && echo $MESSAGE && $DEFAULT
    echo >> "$LOG_FILE"
    echo $MESSAGE >> "$LOG_FILE"
}

msg "Run $ACTION for $PROJECT_DIR"
msg "Logfile: $LOG_FILE"
sudo rm -f $LOG_FILE
echo

for t in `cat $TEMPLATE_FILE`; do
    for f in $SERVICE_DIR/${t}_*$ACTION*.sh; do
        if [ -f $f ]; then
            msg "Run $f"
            $f || {
                msg "$ACTION crashed, see logfile: $LOG_FILE"
                msg "For clean: removesite $PROJECT_DIR"
                exit 0
            }
            echo
        fi
    done
done

# Post install, update action
if [ -f $SOURCE_DIR/.makesite_*$ACTION* ]; then
    msg "Run $f" && $f && echo
fi
