#!/bin/bash

# Creates a rack 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_ruby_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="ruby-1.8"
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 "ruby 1.8"
fi

#
# Create the core of the application
#

create_cartridge_instance_dir "$cartridge_type"
cartridge_instance_dir=$(get_cartridge_instance_dir "$cartridge_type")

# FIXME Old directory should no longer be required
mkdir -p /s
chmod 751 /s
#"/s/$(echo \"${uuid}_${application}\" | md5sum | cut -d ' ' -f1)"
pushd "$cartridge_instance_dir" > /dev/null
create_standard_app_dirs
mkdir conf conf.d logs ../.gem $APP_REPO_DIR/public $APP_REPO_DIR/tmp
ln -s /usr/lib64/httpd/modules modules
ln -s /etc/httpd/conf/magic conf/magic
ln -s ../../app-root/runtime/repo/log/production.log logs/production.log

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/.gem || 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_path_env_var
create_standard_repo_dir_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
