#!/bin/sh

SCRIPT_HOME=$(dirname $(readlink -s -f $(which $0)))
SCRIPT=$(basename $0)

TEMPLATES_DIR=$(perl -mFile::ShareDir -e"print File::ShareDir::dist_dir q~Spike~")
TEMPLATES_DIR="$TEMPLATES_DIR/template"

if [ ! -d "$TEMPLATES_DIR" ]; then
    >&2 echo "Templates directory doesn't exist: $TEMPLATES_DIR"
    exit 1
fi

SITE="$1"

if [ -z "$SITE" ]; then
    >&2 echo "Usage: $SCRIPT SITE [TEMPLATE]"
    exit 1
fi

if [[ ! "$SITE" =~ ^[A-Za-z]([0-9A-Za-z])*$ ]]; then
    >&2 echo "Site name isn't valid: $SITE"
    exit 1;
fi

TEMPLATE="default"

if [ -n "$2" ]; then
    TEMPLATE="$2"

    if [ ! -d "$TEMPLATES_DIR/$TEMPLATE" ]; then
        >&2 echo "Template doesn't exist: $TEMPLATE"
        exit 1;
    fi
fi

CURRENT_DIR=$(pwd)

cd "$TEMPLATES_DIR/$TEMPLATE"

for SRC_FILE in $(find . -type f)
do
    TARGET_FILE=$(echo "$SRC_FILE" | sed -e "s/deadbeef/${SITE,,}/g" -e "s/Dead[Bb]eef/${SITE^}/g" -e "s/##DEADBEEF##/${SITE^^}/g")
    TARGET_FILE=$(readlink -m "$CURRENT_DIR/${SITE^}/$TARGET_FILE")

    if [ -e "$TARGET_FILE" ]; then
        cd "$CURENT_DIR"

        >&2 echo "File is exists: $TARGET_FILE"
        exit 1
    fi
done

for SRC_FILE in $(find . -type f)
do
    TARGET_FILE=$(echo "$SRC_FILE" | sed -e "s/deadbeef/${SITE,,}/g" -e "s/Dead[Bb]eef/${SITE^}/g" -e "s/##DEADBEEF##/${SITE^^}/g")
    TARGET_FILE=$(readlink -m "$CURRENT_DIR/${SITE^}/$TARGET_FILE")

    echo "$TARGET_FILE"

    install -D -m 644 "$SRC_FILE" "$TARGET_FILE"
    sed -e "s/deadbeef/${SITE,,}/g" -e "s/Dead[Bb]eef/${SITE^}/g" -e "s/DEADBEEF/${SITE^^}/g" -i "$TARGET_FILE"
done

cd "$CURENT_DIR"