Skip to content

Instantly share code, notes, and snippets.

@logc
Created April 26, 2019 15:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save logc/f000ef9db51e96c88ac9f782fe2bf3e4 to your computer and use it in GitHub Desktop.
Save logc/f000ef9db51e96c88ac9f782fe2bf3e4 to your computer and use it in GitHub Desktop.
Create a Scala project from Fish shell
function mkscala --argument proj org tld
set -q tld[1]
or set tld "com"
set -q org[1]
or set org "example"
echo "Creating a Scala project called" $proj
mkdir -p $proj/{project,src}
mkdir -p $proj/src/{main,test}/{java,scala,resources}
mkdir -p $proj/src/{main,test}/scala/$tld/$org/$proj
echo "sbt.version=1.2.8" > $proj/project/build.properties
echo "import sbt._
object Dependencies {
lazy val scalaTest =\"org.scalatest\" %% \"scalatest\" % \"3.0.5\"
}" > $proj/project/Dependencies.scala
echo "import Dependencies._
ThisBuild / scalaVersion := \"2.12.8\"
ThisBuild / version := \"0.1.0-SNAPSHOT\"
ThisBuild / organization := \""$tld"."$org"\"
ThisBuild / organizationName := \""$org"\"
lazy val root = (project in file(\".\"))
.settings(
name := \""$proj"\",
libraryDependencies += scalaTest % Test
)" > $proj/build.sbt
echo "package "$proj"
object Hello extends Greeting with App {
println(greeting)
}
trait Greeting {
lazy val greeting: String = \"hello\"
}" > $proj/src/main/scala/$tld/$org/$proj/Hello.scala
echo "package "$proj"
import org.scalatest._
class HelloSpec extends FlatSpec with Matchers {
\"The Hello object\" should \"say hello\" in {
Hello.greeting shouldEqual \"hello\"
}
}" > $proj/src/test/scala/$tld/$org/$proj/TestHello.scala
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment