#!/bin/bash

PROJECT_NAME=""
FUNCTION="help"
USE_CURRENT_DIR=false

while [[ "$#" -gt 0 ]]
  do
    case $1 in
      -n|--name)
        PROJECT_NAME="$2"
        ;;
      -c|--create-project)
        FUNCTION="create_project"
        ;;
      -e|--envoxy-dir)
        ENVOXY_SRC="$2"
        ;;
      .)
        USE_CURRENT_DIR=true
        ;;
      -h|--help|help)
        FUNCTION="help"
    esac
    shift
  done


create_project(){

    PROJECT_DIR=$(pwd)

    echo "Setting up envoxy templates dir"
    if [ -z "$ENVOXY_SRC" ]
    then
        ENVOXY_SRC=$VIRTUAL_ENV/envoxyd/etc
    fi
    ENVOXY_TEMPLATE_DIR=$(echo $ENVOXY_SRC/templates)

    if [ $USE_CURRENT_DIR != true ]
    then

        # promp to entry project name if not defined
        if [ -z "$PROJECT_NAME" ]
        then
            echo -n "Please enter project name: "
            read PROJECT_NAME
        fi

        # slug for project path

        project_name_slug=`echo $PROJECT_NAME | iconv -t ascii//TRANSLIT | sed -r s/[^a-zA-Z0-9]+/-/g | sed -r s/^-+\|-+$//g | tr A-Z a-z´`

        if [ $PROJECT_NAME == $project_name_slug ]
        then
            echo "Setting up $PROJECT_NAME"
        else
            echo "Using slug $project_name_slug"
        fi


        if [ -d $project_name_slug ]
        then
            echo "Project $project_name_slug already exists"
            exit 0
        else
            echo "Creating directory $project_name_slug ..."
            mkdir $project_name_slug
            PROJECT_DIR=$PROJECT_DIR/$project_name_slug
        fi
    fi

    echo "Including example files"
    cp $ENVOXY_TEMPLATE_DIR/__init__.py $PROJECT_DIR/
    cp $ENVOXY_TEMPLATE_DIR/run.py $PROJECT_DIR/
    cp -R $ENVOXY_TEMPLATE_DIR/views $PROJECT_DIR/

    echo "Including config files"
    cp -R $ENVOXY_TEMPLATE_DIR/confs $PROJECT_DIR/

    app_file=$(echo "$PROJECT_DIR/__init__.py" | sed 's/\//\\\//g')
    app_path=$(echo "$PROJECT_DIR" | sed 's/\//\\\//g')
    envoxy_src=$(echo "$ENVOXY_SRC" | sed 's/\//\\\//g')


    # replacing paths in config file and run module
    sed -i "s/\${app_file}/`echo $app_file`/" $PROJECT_DIR/confs/envoxy.json
    sed -i "s/\${app_path}/`echo $app_path`/; s/\${envoxy_src}/`echo $envoxy_src`/" $PROJECT_DIR/__init__.py

    cd $PROJECT_DIR/$project_name_slug

    echo "Now you can use envoxyd \n"
    echo "envoxyd --http :8080 --set conf=$PROJECT_DIR/confs/envoxy.json"
}

help() {
    echo
    echo "ENVOXY HELP"
    echo "==========="
    echo
    echo "Commands available:"
    echo " $ envoxy --create-project"
    echo "SYNOPSYS"
    echo "    create a new project with a base template files"
    echo "OPTIONS"
    echo "    -n|-name: this will create a new project dir"
    echo "    -e|-envoxy-dir: specify a different source directory for envoxy (default $VIRTUAL_ENV/envoxyd/etc/templates/)"
    echo "    . : use current path"
}

if "$FUNCTION" == "create_project"
then
	$create_project
elif "$FUNCTION" == "help"
then
    $help
fi

