#!/bin/bash

# On no parameters, we display the manpage
if [ "x$1" = "x" ]; then
	exec man rails
fi

TEMP=`getopt -o dC --long no-docs,copy -- "$@"`
if [ $? != 0 ]; then 
	echo "Terminating..." >&2
	exit 1
fi

eval set -- "$TEMP"
COPY="false"
DOCUMENTATION="true"
OVERWRITE_OPTION=""

while true; do
    case "$1" in
        -d|--no-docs)
            DOCUMENTATION="false"
            ;;
        -C|--copy)
            COPY="true"
            ;;
        -F|--force-overwrite)
            OVERWRITE_OPTION="--force"
            ;;
        --)
            shift
            break
            ;;
        *)
            echo "Internal error"
            exit 1
            ;;
	esac
	shift
done

CWD="`pwd`"
if [ "x$1" = "x" ]; then
	exec man rails
fi
while [ "x$1" != "x" ]; do
	if [ "${1:0:1}" = "/" ]; then
		RAILS_PKG_DESTINATION="$1"
	else
		RAILS_PKG_DESTINATION="$CWD/$1"
	fi
	
	# Install/upgrade core rails
        /usr/bin/ruby /usr/share/rails/railties/bin/rails --without-gems ${OVERWRITE_OPTION} ${RAILS_PKG_DESTINATION}
        
	# Create/update the vendor directory
        if [ "x${COPY}" = "xtrue" ]; then
            rm -rf ${RAILS_PKG_DESTINATION}/vendor/*
            cp -a /usr/share/rails/* ${RAILS_PKG_DESTINATION}/vendor/
        else
            rm -rf ${RAILS_PKG_DESTINATION}/vendor/*
            ln -s /usr/share/rails/* ${RAILS_PKG_DESTINATION}/vendor/
        fi

	# link to docs, if needed
        if [ "x${DOCUMENTATION}" = "xtrue" ]; then
            rm -rf ${RAILS_PKG_DESTINATION}/doc/api
            if [ "x${COPY}" = "xtrue" ]; then
                mkdir ${RAILS_PKG_DESTINATION}/doc/api
                cp -a /usr/share/doc/rails/html/* ${RAILS_PKG_DESTINATION}/doc/api/
            else
                ln -s /usr/share/doc/rails/html ${RAILS_PKG_DESTINATION}/doc/api
            fi
        fi
        
	shift
done
exit 0
