#!/usr/bin/env bash

if [[ $# -lt 1 ]] ; then
    echo "Usage: $0 <package-name/dir> [<arguments>]"
    exit 1
fi

BASE_DIR="$(cd $(dirname $(dirname "$0")) && pwd)"

if [[ -d $1 ]] ; then
    PACKAGE_DIR="$(cd "$1" && pwd)"
else
    PACKAGE_DIR="${BASE_DIR}/src/$(echo "$1" | sed -r 's/(^|-)(\w)/\U\2/g')"
fi
shift;

BIN="vendor/bin/simple-phpunit"
CMD="${BIN} ${@}"

if [[ ! -f "${PACKAGE_DIR}/phpunit.xml.dist" ]] ; then
    echo "No valid package found in \"${PACKAGE_DIR}\""
    exit 1
fi

if [[ ! -f "${PACKAGE_DIR}/${BIN}" ]] ; then
    composer update --prefer-dist --quiet --working-dir="${PACKAGE_DIR}"
    [[ $? -ne 0 ]] && exit 1
fi

if [[ ! $TRAVIS ]] ; then
    composer link -h &> /dev/null
    if [[ $? -ne 0 ]] ; then
        composer update --prefer-dist --quiet --working-dir="${BASE_DIR}"
        [[ $? -ne 0 ]] && exit 1
    fi

    composer link "${PACKAGE_DIR}" --working-dir="${BASE_DIR}"
    [[ $? -ne 0 ]] && exit 1
fi

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

echo -e "\e[34mTesting package\e[0m"
bash -xc "${CMD}" 2>&1

popd &> /dev/null
