#! /bin/bash

##- Creates a new TWiki instance
##: wiki aname asurname alogin amail cname csurname clogin cmail project [key value...]
##+ wiki       Name of the created instance
##+ aname      Wiki administrator name
##+ asurname   Wiki administrator surname
##+ alogin     Wiki administrator login identifier
##+ amail      Wiki administrator e-mail address
##+ cname      Wiki customer name
##+ csurname   Wiki customer surname
##+ clogin     Wiki customer login identifier
##+ cmail      Wiki customer e-mail address
##+ project    Wiki name of the project

[ "${__twa_bindir}" ] || exec "$(dirname "$0")/twiki-admin" create "$@"
[[ $# -ge 10 ]] || __twa_usage_and_exit

__twa_run_locked
__twa_config "$1"

# Original "creawiki.sh" script follows, with some modifications to make it
# honor variables picked from the configuration file and making it less
# chatty.

# This is an example of how variables may look like for a wiki
#-------------------------------------------------------------
# WIKI_NAME=foowiki
#
# ADMIN_NAME="Mr"
# ADMIN_SURNAME="Proper"
# ADMIN_USERID="mrproper"
# ADMIN_EMAIL="${ADMIN_USERID}@yourdomain.com"
# ADMIN_WIKINAME="${ADMIN_NAME}${ADMIN_SURNAME}"
#
# CUSTOMER_NAME="Mr"
# CUSTOMER_SURNAME="Customer"
# CUSTOMER_USERID="mrcustomer"
# CUSTOMER_EMAIL="${CUSTOMER_USERID}@somedomain.com"
# CUSTOMER_WIKINAME="${CUSTOMER_NAME}${CUSTOMER_SURNAME}"
#
# PROJECT_NAME="FunkyProject"
# PROJECT_WIKINAME="${PROJECT_NAME}"
# PROJECT_ADMIN_WIKINAME="${PROJECT_NAME}Admin"
# PROJECT_USERS_GROUP="${PROJECT_NAME}Group"
# PROJECT_ADMIN_GROUP="${PROJECT_ADMIN_WIKINAME}Group"


WIKI_NAME=$1

ADMIN_NAME=$2
ADMIN_SURNAME=$3
ADMIN_USERID=$4
ADMIN_EMAIL=$5
ADMIN_WIKINAME="${ADMIN_NAME}${ADMIN_SURNAME}"

CUSTOMER_NAME=$6
CUSTOMER_SURNAME=$7
CUSTOMER_USERID=$8
CUSTOMER_EMAIL=$9
CUSTOMER_WIKINAME="${CUSTOMER_NAME}${CUSTOMER_SURNAME}"

PROJECT_NAME=${10}
PROJECT_WIKINAME="${PROJECT_NAME}"
PROJECT_ADMIN_WIKINAME="${PROJECT_NAME}Admin"
PROJECT_USERS_GROUP="${PROJECT_NAME}Group"
PROJECT_ADMIN_GROUP="${PROJECT_ADMIN_WIKINAME}Group"

# TODO Allow defining (key, value) pairs in the command line for options
#      which are not currently settable from there.


WWWPATH=${cfg_www_root}
TEMPLATE_PATH=${cfg_template}
RESULT_PATH="${cfg_www_root}/${cfg_dir_prefix}$1"

if [[ -d ${RESULT_PATH} ]] ; then
	__twa_die "Directory '${RESULT_PATH}' already exists"
fi

__twa_do cp -r "${TEMPLATE_PATH}" "${RESULT_PATH}"
__twa_do cd "${RESULT_PATH}"


page_edit_sed="
s/${cfg_var_prefix}_ADMIN_NAME/${ADMIN_NAME}/g
s/${cfg_var_prefix}_ADMIN_SURNAME/${ADMIN_SURNAME}/g
s/${cfg_var_prefix}_ADMIN_EMAIL/${ADMIN_EMAIL}/g
s/${cfg_var_prefix}_ADMIN_WIKINAME/${ADMIN_WIKINAME}/g
s/${cfg_var_prefix}_ADMIN_USERID/${ADMIN_USERID}/g
s/${cfg_var_prefix}_CUSTOMER_NAME/${CUSTOMER_NAME}/g
s/${cfg_var_prefix}_CUSTOMER_SURNAME/${CUSTOMER_SURNAME}/g
s/${cfg_var_prefix}_CUSTOMER_EMAIL/${CUSTOMER_EMAIL}/g
s/${cfg_var_prefix}_CUSTOMER_WIKINAME/${CUSTOMER_WIKINAME}/g
s/${cfg_var_prefix}_CUSTOMER_USERID/${CUSTOMER_USERID}/g
s/${cfg_var_prefix}_NAME/${WIKI_NAME}/g
s/${cfg_var_prefix}_PROJECT_WIKINAME/${PROJECT_WIKINAME}/g
s/${cfg_var_prefix}_PROJECT_NAME/${PROJECT_NAME}/g
"
declare -r page_edit_sed

while read -r FILENAME ; do
	__twa_info "Editing '${FILENAME}'"
	__twa_do sed -e "${page_edit_sed}" -i "${FILENAME}"
done < <( find . -exec grep -q "${cfg_var_prefix}_" {} \; -print )


__twa_info "User creation"

__twa_do mv "data/Main/${cfg_var_prefix}_ADMIN_WIKINAME.txt" \
            "data/Main/${ADMIN_WIKINAME}.txt"

__twa_do mv "data/Main/${cfg_var_prefix}_ADMIN_WIKINAME.txt,v" \
            "data/Main/${ADMIN_WIKINAME}.txt,v"

__twa_do mv "data/Main/${cfg_var_prefix}_CUSTOMER_WIKINAME.txt" \
            "data/Main/${CUSTOMER_WIKINAME}.txt"

__twa_do mv "data/Main/${cfg_var_prefix}_CUSTOMER_WIKINAME.txt,v" \
            "data/Main/${CUSTOMER_WIKINAME}.txt,v"

__twa_do mv "data/Main/${cfg_var_prefix}_PROJECT_USERS_GROUP.txt" \
            "data/Main/${PROJECT_USERS_GROUP}.txt"

__twa_do mv "data/Main/${cfg_var_prefix}_PROJECT_USERS_GROUP.txt,v" \
            "data/Main/${PROJECT_USERS_GROUP}.txt,v"

__twa_do mv "data/Main/${cfg_var_prefix}_PROJECT_ADMIN_GROUP.txt" \
            "data/Main/${PROJECT_ADMIN_GROUP}.txt"

__twa_do mv "data/Main/${cfg_var_prefix}_PROJECT_ADMIN_GROUP.txt,v" \
            "data/Main/${PROJECT_ADMIN_GROUP}.txt,v"


__twa_info "Tuning project"

__twa_do mv "data/${cfg_var_prefix}_PROJECT_WIKINAME" \
            "data/${PROJECT_WIKINAME}"

__twa_do mv "data/${cfg_var_prefix}_PROJECT_ADMIN_WIKINAME" \
            "data/${PROJECT_ADMIN_WIKINAME}"

__twa_do mv "pub/${cfg_var_prefix}_PROJECT_WIKINAME" \
            "pub/${PROJECT_WIKINAME}"

__twa_do mv "pub/${cfg_var_prefix}_PROJECT_ADMIN_WIKINAME" \
            "pub/${PROJECT_ADMIN_WIKINAME}"


__twa_info "Cleaning up"
__twa_do rm -rf "data/${cfg_var_prefix}"_*
__twa_do rm -rf "pub/${cfg_var_prefix}"_*

__twa_info "Renaming pages"
__twa_do cd "data/${PROJECT_WIKINAME}"
for i in *${cfg_var_prefix}_PROJECT_WIKINAME* ; do
	__twa_do mv "$i" "${i//${cfg_var_prefix}_PROJECT_WIKINAME/${PROJECT_WIKINAME}}"
done

__twa_info "Adjusting permissions"
__twa_do chown -R "${cfg_dir_owner}" "${RESULT_PATH}"


