packages feed

hsenv-0.4: skeletons/cabal

#!/bin/sh

PATH_ELEMS="$(echo ${PATH} | tr -s ':' '\n')"

ORIG_CABAL_BINARY=""

for PATH_ELEM in ${PATH_ELEMS}; do
    CABAL_CANDIDATE="${PATH_ELEM}/cabal"
    if command -v "${CABAL_CANDIDATE}" > /dev/null 2> /dev/null; then
        if [ "${0}" != "${CABAL_CANDIDATE}" ]; then
            if [ -z "${ORIG_CABAL_BINARY}" ]; then
                ORIG_CABAL_BINARY="${CABAL_CANDIDATE}"
            fi
        fi
    fi
done

if [ -z "${ORIG_CABAL_BINARY}" ]; then
    echo "cabal wrapper: Couldn't find real cabal program"
    exit 1
fi

CABAL_CONFIG="<CABAL_CONFIG>"

CABAL_BUILDDIR_ARG=""

if [ -z "<HSENV_NAME>" ]; then
    CABAL_BUILDIR="dist"
else
    CABAL_BUILDIR="dist_<HSENV_NAME>"
fi

CABAL_BUILDABLE_COMMANDS="build clean configure copy haddock hscolour install register sdist test upgrade"

CABAL_COMMAND="$(echo ${@} | tr -s ' ' '\n' | grep -E '[a-z]' | grep -Ev '^-'  | head -n 1)"

for CABAL_BUILDABLE_COMMAND in ${CABAL_BUILDABLE_COMMANDS}; do
    if [ "${CABAL_BUILDABLE_COMMAND}" = "${CABAL_COMMAND}" ]; then
        CABAL_BUILDDIR_ARG="--builddir=${CABAL_BUILDIR}"
    fi
done

CABAL_CONFIGURE_COMMANDS="configure install upgrade"

for CABAL_CONFIGURE_COMMAND in ${CABAL_CONFIGURE_COMMANDS}; do
    if [ "${CABAL_CONFIGURE_COMMAND}" = "${CABAL_COMMAND}" ]; then
        CABAL_BUILDDIR_ARG="${CABAL_BUILDDIR_ARG} ${PACKAGE_DB_FOR_CABAL}"
    fi
done

exec "${ORIG_CABAL_BINARY}"            \
       --config-file="${CABAL_CONFIG}" \
       ${CABAL_BUILDDIR_ARG} "${@}"