#!/bin/bash

# Creates a diy 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_diy_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="diy-0.1"
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 "diy 0.1"
fi

#
# Create the core of the application
#

create_cartridge_instance_dir "$cartridge_type"
DIY_INSTANCE_DIR=$(get_cartridge_instance_dir "$cartridge_type")
pushd "$DIY_INSTANCE_DIR" > /dev/null
create_standard_app_dirs
mkdir -p ../.m2/repository
chown -R $user_id ../.m2/repository
mkdir logs
popd > /dev/null

populate_repo_dir

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

secure_app_dir

secure_cart_instance_dir

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
echo "export PATH=$CART_INFO_DIR/bin/:$CARTRIDGE_BASE_PATH/abstract/info/bin/:$PATH" > $APP_HOME/.env/PATH

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
import_env_vars
$CART_INFO_DIR/bin/deploy_httpd_proxy.sh $application $namespace $uuid $IP

restart_httpd_graceful

client_result "Disclaimer: This is an experimental cartridge that provides a way to try unsupported languages, frameworks, and middleware on Openshift."
enable_cgroups
