gdritter repos GRUtils / master scripts / mk-cabal-executable-file
master

Tree @master (Download .tar.gz)

mk-cabal-executable-file @masterraw · history · blame

#!/bin/bash -e

if [ $# -eq 0 ]; then
	EXENAME="$(basename $(pwd))"
	TGT="-"
elif [ $# -eq 1 ]; then
	EXENAME="$1"
	TGT='-'
elif [ $# -eq 2 ]; then
	EXENAME="$1"
	TGT="$2"
else
	echo "USAGE: $0 [executable name]" >&2
	exit 99
fi

NAME=$(git config user.name)
EMAIL=$(git config user.email)
USER="${NAME} <${EMAIL}>"
YEAR=$(date '+%Y')

if [ -z "${CATEGORY}" ]; then
    CAT_FIELD="-- category:"
else
    CAT_FIELD="category:         ${CATEGORY}"
fi

if [ -z "${SYNOPSIS}" ]; then
    SYN_FIELD="-- synopsis:"
else
    SYN_FIELD="synopsis:         ${SYNOPSIS}"
fi

if [ -z "${DESCRIPTION}" ]; then
    DESCR_FIELD="-- description:"
else
    DESCR_FIELD="description:      ${DESCRIPTION}"
fi

function cabal_file {
	cat <<EOF
name:             ${EXENAME}
version:          0.1.0.0
${SYN_FIELD}
${DESCR_FIELD}
license:          BSD3
license-file:     LICENSE
author:           ${USER}
maintainer:       ${USER}
copyright:        ©${YEAR} ${NAME}
${CAT_FIELD}
build-type:       Simple
cabal-version:    >= 1.14

executable ${EXENAME}
  hs-source-dirs:      src
  main-is:             Main.hs
  default-extensions:  OverloadedStrings,
                       ScopedTypeVariables
  ghc-options:         -Wall
  build-depends:       base >=4.7 && <4.10
  default-language:    Haskell2010
EOF
}

if [ "x${TGT}" = "x-" ]; then
	cabal_file
else
	cabal_file >${TGT}
fi