sbt/bin/sbt-setup

106 lines
2.0 KiB
Bash
Executable File

#!/usr/bin/env bash
#
function programDir () {
SDIR=$(dirname "$1");
echo $(cd $SDIR ; pwd -P)
}
if [ -h "$0" ]; then
BINDIR=$(programDir $(greadlink "$0"))
else
BINDIR=$(programDir "$0")
fi
. $BINDIR/util.sh
BASE=$(abspath $BINDIR/..)
declare -a args
TEMPLATE="simple"
SCALA_VERSION="2.9.1"
PROJECT_VERSION="0.1"
DO_GITHUB=
while [ $# -gt 0 ]; do
case "$1" in
--simple)
TEMPLATE="simple"
shift
;;
--fancy)
TEMPLATE="fancy"
shift
;;
--version)
shift
PROJECT_VERSION="$1"
shift
;;
--github)
shift
DO_GITHUB="true"
;;
--28)
SCALA_VERSION="2.8.1"
shift
;;
--29)
SCALA_VERSION="2.9.0"
shift
;;
*)
args=("${args[@]}" "$1")
shift
;;
esac
done
# reset "$@" to the remaining args
set -- "${args[@]}"
if [[ $# -ne 1 ]]; then
cat <<EOM
Usage: $(basename $0) [options] <project> [dependencies]
--hub create github project (requires hub and more)
--simple use simple project template
--fancy use multi-file project template
--28 latest release of scala 2.8.x
--29 latest release of scala 2.9.x
--version <version> project initial version
EOM
exit 1
fi
if [ -z "$1" ]; then
echo "Usage: $0 <project name>"
exit 1
fi
PROJECT="$1"
PACKAGE=${ORGANIZATION:-template}
SBT_VERSION="0.7.7"
DIR=$(echo ${PROJECT} | tr '[A-Z]' '[a-z]')
PROJECT_CC=`camelCase ${PROJECT}`
PROJECT_CLASS=${PROJECT_CC}Project
SPEC_CLASS=${PROJECT_CC}Spec
[[ -e $DIR ]] && { echo "$DIR exists, please remove it first." ; exit 1; }
mkdir -p $DIR
cd $DIR
echo "Creating \"${PACKAGE} % ${PROJECT} % ${PROJECT_VERSION}\" from template \"$TEMPLATE\"."
echo "Building against scala $SCALA_VERSION with sbt $SBT_VERSION."
echo "Repository in ${PWD} ."
echo
mkdir -p project src/main/scala src/main/java src/test/scala src/test/java
createGitRepo
sbt update package test
echo ""
echo "Ready to roll in $PWD"