Skip to content

Instantly share code, notes, and snippets.

@yoeluk
Created February 13, 2016 17:29
Show Gist options
  • Save yoeluk/e3137a7d602f701c855c to your computer and use it in GitHub Desktop.
Save yoeluk/e3137a7d602f701c855c to your computer and use it in GitHub Desktop.
#!/bin/bash
declare -r TRUE=0
declare -r FALSE=1
# takes a string and returns true if it seems to represent "yes"
function isYes() {
local x=$1
[ $x = "y" ] && echo $TRUE; return
[ $x = "Y" ] && echo $TRUE; return
[ $x = "yes" ] && echo $TRUE; return
echo $FALSE
}
echo "Creating an SBT project..."
while [ $TRUE ]; do
echo ""
read -p "Project name (my-first-project): " directoryName
directoryName=${directoryName:-my-first-project}
read -p "Create .gitignore file? (Y/n): " createGitignore
createGitignore=${createGitignore:-y}
read -p "Create README.md file? (Y/n): " createReadme
createReadme=${createReadme:-y}
echo ""
echo "-----------------------------------------------"
echo "Project name: $directoryName"
echo "Create .gitignore file?: $createGitignore"
echo "Create README.md file?: $createReadme"
echo "-----------------------------------------------"
createProject=${createProject:-y}
[ "$(isYes $createProject)" = "$TRUE" ] && break
done
mkdir -p ${directoryName}/src/{main,test}/{resources,scala}
mkdir -p ${directoryName}/src/main/scala/com/briefscala
echo "package com.briefscala
object Main {
def main(args: Array[String]): Unit = {
println(\"hello\")
}
}
" > ${directoryName}/src/main/scala/com/briefscala/Main.scala
mkdir ${directoryName}/project
echo "sbt.version=0.13.9" > ${directoryName}/project/build.properties
echo "logLevel := Level.Warn
resolvers += Classpaths.sbtPluginReleases
resolvers += Resolver.sonatypeRepo(\"releases\")
addSbtPlugin(\"com.eed3si9n\" % \"sbt-assembly\" % \"0.13.0\")
" > ${directoryName}/project/plugins.sbt
echo "name := \"$directoryName\"
version := \"0.1.0-SNAPSHOT\"
scalaVersion := \"2.11.7\"
organization := \"com.briefscala\"
resolvers += \"Typesafe Repository\" at \"http://repo.typesafe.com/typesafe/releases/\"
libraryDependencies ++= Seq(
\"org.scalaz\" %% \"scalaz-core\" % \"7.2.0\",
\"org.scalaz\" %% \"scalaz-concurrent\" % \"7.2.0\",
\"com.chuusai\" %% \"shapeless\" % \"2.2.5\"
)
scalacOptions ++= Seq(
\"-unchecked\",
\"-Xlint\",
\"-deprecation\",
\"-target:jvm-1.7\",
\"-encoding\", \"UTF-8\",
\"-Ywarn-dead-code\",
\"-language:_\",
\"-feature\"
)
assemblyJarName in assembly := \"$directoryName.jar\"
" > ${directoryName}/build.sbt
if [ "$(isYes $createGitignore)" = "$TRUE" ]; then
echo ".classpath
.settings
.ensime*
.idea/
project/project
target/" > ${directoryName}/.gitignore
fi
if [ "$(isYes $createReadme)" = "$TRUE" ]; then
touch ${directoryName}/README.md
fi
echo ""
echo "${directoryName} project was created! Starting sbt..."
echo ""
cd ${directoryName} && sbt
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment