#!/usr/bin/env bash

if [[ $# -gt 1 ]] ; then
    echo "Usage: $0 [<target-directory>]"
    exit 1
fi

DIR="${1:-var/test-project/}"
PACKAGES="orm "
DEV_PACKAGES="debug maker server "

for PACKAGE in $(find src/*Bundle/composer.json -type f) ; do
    PACKAGE_NAME=$(grep -E "^\s*\"name\"\s*:\s*\"msgphp\/([^\"]+)\"\s*,\s*$" "${PACKAGE}")
    if [[ ! -z $PACKAGE_NAME ]] ; then
        PACKAGE_NAME=$(echo "${PACKAGE_NAME}" | sed -e "s/^\s*\"name\":\s*\"msgphp\///" -e "s/\"\s*,\s*$//")
        echo -en "\e[34mInstall \"msgphp/${PACKAGE_NAME}\"? [yN]\e[0m "
        read answer
        if [[ $answer =~ ^y|Y|yes|YES$ ]] ; then
            PACKAGES="${PACKAGES}msgphp/${PACKAGE_NAME} "
        fi
    fi
done

composer create-project --prefer-dist --no-progress symfony/skeleton "${DIR}"
[[ $? -ne 0 ]] && exit 1

pushd "${DIR}" &> /dev/null

echo -e "\e[34mInstalling dependencies...\e[0m"
composer config extra.symfony.allow-contrib true && \
composer require --prefer-dist --no-suggest ${PACKAGES} && \
composer require --prefer-dist --dev --no-suggest ${DEV_PACKAGES}
[[ $? -ne 0 ]] && exit 1

popd &> /dev/null

echo -en "\e[34mLink dependencies? [Yn]\e[0m"
read answer
if [[ ${answer:-y} =~ ^y|Y|yes|YES$ ]] ; then
    composer link -h &> /dev/null
    if [[ $? != 0 ]] ; then
        composer update --prefer-dist --quiet
        [[ $? -ne 0 ]] && exit 1
    fi

    composer link "${DIR}"
fi
