#!/bin/bash

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
RULESET=${RULESET:='ruleset.xml'}
EXTENSIONS=${EXTENSIONS:='php,php3,php4,php5,phtml,phpt'}
EXCLUDE_FOLDERS=${EXCLUDE_FOLDERS:='*/temp,*/tmp'}
FOLDERS=()

# Try several ruleset paths:
# - <package-dir>/$RULESET
# - <package-dir>/$RULESET.xml
# - <vendor-dir>/ninjify/coding-standard/$RULESET
# - <vendor-dir>/ninjify/coding-standard/$RULESET.xml
# - $RULESET
# - <vendor-dir>/ninjify/coding-standard/ruleset.xml (fallback)
if [ -f "${DIR}/../../${RULESET}" ]; then
    RULESET="${DIR}/../../${RULESET}"
elif [ -f "${DIR}/../../${RULESET}.xml" ]; then
    RULESET="${DIR}/../ninjify/coding-standard/${RULESET}.xml"
elif [ -f "${DIR}/../ninjify/coding-standard/${RULESET}" ]; then
    RULESET="${DIR}/../ninjify/coding-standard/${RULESET}"
elif [ -f "${DIR}/../ninjify/coding-standard/ruleset-${RULESET}.xml" ]; then
    RULESET="${DIR}/../ninjify/coding-standard/ruleset-${RULESET}.xml"
elif [ ! -f "${RULESET}" ]; then
    RULESET="${RULESET}"
else
    RULESET="${DIR}/../ninjify/coding-standard/ruleset.xml"
fi

# Show installed coding standards
${DIR}/phpcs -i

# Run fixing
if [ -z "$1" ]; then
    # Run codefixer with default args
    [ -d "app" ] && FOLDERS+=('app')
    [ -d "src" ] && FOLDERS+=('src')
    [ -d "tests" ] && FOLDERS+=('tests')
    ${DIR}/phpcbf --standard="${RULESET}" --ignore="${EXCLUDE_FOLDERS}" --extensions="${EXTENSIONS}" --colors --encoding=utf-8 --no-patch -nsp ${FOLDERS[*]}
else
    # Run codefixer
    ${DIR}/phpcbf --standard="${RULESET}" --ignore="${EXCLUDE_FOLDERS}" --extensions="${EXTENSIONS}" --colors --encoding=utf-8 --no-patch -nsp $@
fi
