#!/bin/bash

# Creates a perl instance

# Exit on any errors
set -e

function print_help {
    echo "Usage: $0 app-name namespace uuid git-url"

    echo "$0 $@" | logger -p local0.notice -t openshift_origin_perl_configure
    exit 1
}

while getopts 'd' OPTION
do
    case $OPTION in
        d) set -x
        ;;
        ?) print_help
        ;;
    esac
done


[ $# -eq 4 -o $# -eq 3 ] || print_help

cartridge_type="perl-5.10"
source "/etc/openshift/node.conf"
source ${CARTRIDGE_BASE_PATH}/abstract/info/lib/util

setup_configure "$1" $2 $3 $4
disable_cgroups

check_cartridge_dir_doesnt_exist

# Repo
if [ ! -d $git_url ]; then
	clone_external_git_repo $application $user_id $group_id $uuid $git_url
else
	clone_git_repo $application $user_id $group_id $uuid "perl 5.10"
fi

#
# Create the core of the application
#
create_cartridge_instance_dir "$cartridge_type"
PERLCART_INSTANCE_DIR=$(get_cartridge_instance_dir "$cartridge_type")
pushd "$PERLCART_INSTANCE_DIR" > /dev/null
create_standard_app_dirs
mkdir conf conf.d logs perl5lib ../.cpanm
ln -s /usr/lib64/httpd/modules modules
ln -s /etc/httpd/conf/magic conf/magic
popd > /dev/null

#
# Find an open localhost IP
#
IP=`find_open_ip $uid $uuid`

$CART_INFO_DIR/bin/deploy_httpd_config.sh $application $uuid $IP

populate_repo_dir

secure_app_dir

secure_cart_instance_dir

chown $user_id.$group_id -R $APP_HOME/.cpanm/ || error "Failed to chown new application space.  Please contact support" 123

secure_conf_dirs

observe_setup_app_and_git_dirs

observe_setup_cart_instance_dir

#
# Create environment variables
#
create_standard_cart_env_vars
create_standard_env_uservars
create_standard_network_env_vars $IP
create_cart_network_env_vars $IP
create_standard_repo_dir_env_var
create_standard_path_env_var

observe_setup_env_uservars_dir

if [ ! -d $git_url ]; then
    #
    # Resolve app dependencies for template
    #
    resolve_application_dependencies $uuid $application &
else
    #
    # Start the server
    #
    start_app
fi

#
# Create virtualhost definition for apache
#
export CART_INFO_DIR
$CARTRIDGE_BASE_PATH/abstract/info/bin/deploy_httpd_proxy.sh $application $namespace $uuid $IP

restart_httpd_graceful
enable_cgroups
