diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-02-06 13:03:36 -0500 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-03-04 15:06:30 -0500 |
commit | 974942db43ff2d1fa7ba71ad60f9bb9eae2d8631 (patch) | |
tree | d7235df9d4d6a67753dc2a20ab6bfcb7a24dc74c /stage2/Scaffold.scala | |
download | cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.tar.gz cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.tar.bz2 cbt-974942db43ff2d1fa7ba71ad60f9bb9eae2d8631.zip |
CBT Version 1.0-BETA
Diffstat (limited to 'stage2/Scaffold.scala')
-rw-r--r-- | stage2/Scaffold.scala | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/stage2/Scaffold.scala b/stage2/Scaffold.scala new file mode 100644 index 0000000..00c8706 --- /dev/null +++ b/stage2/Scaffold.scala @@ -0,0 +1,148 @@ +package cbt +import java.io._ +import java.net._ +import ammonite.ops.{cwd => _,_} + +trait Scaffold{ + def logger: Logger + + def generateBasicBuildFile( + projectDirectory: File, + scalaVersion: String, + groupId: String, + artifactId: String, + version: String + ): Unit = { + /** + TODO: + - make behavior more user friendly: + - not generate half and then throw exception for one thing already existing + - maybe not generate all of this, e.g. offer different variants + */ + + val generatedFiles = Seq( + "build/build.scala" -> s"""import cbt._ +import java.net.URL +import java.io.File +import scala.collection.immutable.Seq + +class Build(context: Context) extends BasicBuild(context) with BuildShared{ + override def artifactId: String = "$artifactId" + override def groupId = "$groupId" + + override def dependencies = super.dependencies ++ Seq( // don't forget super.dependencies here + // "org.cvogt" %% "scala-extensions" % "0.4.1" + ) + + // required for .pom file + override def name = artifactId + override def description : String = lib.requiredForPom("description") +} +""", + + "build/build/build.scala" -> s"""import cbt._ +import java.net.URL +import java.io.File +import scala.collection.immutable.Seq + +class Build(context: Context) extends BuildBuild(context){ + override def scalaVersion: String = "2.11.7" + + override def dependencies = super.dependencies ++ Seq( + BuildDependency( projectDirectory + "/../build-shared/") + // , "com.lihaoyi" %% "ammonite-ops" % "0.5.5" + ) +} +""", + + "test/Main.scala" -> s"""object Main{ + def main( args: Array[String] ) = { + assert( false, "Go. Write some tests :)!" ) + } +} +""", + + "test/build/build.scala" -> s"""import cbt._ +import java.net.URL +import java.io.File +import scala.collection.immutable.Seq + +class Build(context: cbt.Context) extends BasicBuild(context) with BuildShared/* with cbt.mixins.ScalaTest*/{ + // def scalaTestVersion = "2.2.6" + + override def dependencies = super.dependencies ++ Seq( + // , "org.scalacheck" %% "scalacheck" % "1.13.0" + ) +} +""", + + "test/build/build/build.scala" -> s"""import cbt._ +import java.net.URL +import java.io.File +import scala.collection.immutable.Seq + +class Build(context: Context) extends BuildBuild(context){ + override def scalaVersion: String = "2.11.7" + + override def dependencies = super.dependencies ++ Seq( + BuildDependency( projectDirectory + "/../../build-shared/") + // , "com.lihaoyi" %% "ammonite-ops" % "0.5.5" + ) +} +""", + + "build-shared/build/build.scala" -> s"""import cbt._ +import java.net.URL +import java.io.File +import scala.collection.immutable.Seq + +class Build(context: Context) extends BasicBuild(context){ + override def scalaVersion: String = "$scalaVersion" + + override def dependencies = super.dependencies ++ Seq( // don't forget super.dependencies here + CbtDependency + // , "org.cvogt" %% "scala-extensions" % "0.4.1" + ) +} +""", + + "build-shared/BuildShared.scala" -> s"""import cbt._ +import java.net.URL +import java.io.File +import scala.collection.immutable.Seq + +trait BuildShared extends BasicBuild{ + override def scalaVersion: String = "$scalaVersion" + override def enableConcurrency = false // enable for speed, disable for debugging + + override def groupId = "$groupId" + override def version = "$version" + + // required for .pom file + override def url : URL = lib.requiredForPom("url") + override def developers: Seq[Developer] = lib.requiredForPom("developers") + override def licenses : Seq[License] = lib.requiredForPom("licenses") + override def scmUrl : String = lib.requiredForPom("scmUrl") + override def scmConnection: String = lib.requiredForPom("scmConnection") + override def pomExtra: Seq[scala.xml.Node] = Seq() +} +""" + ) + + generatedFiles.map{ + case ( fileName, code ) => + scala.util.Try{ + write( Path(projectDirectory+"/"+fileName), code ) + import scala.Console._ + println( GREEN + "Created " + fileName + RESET ) + } + }.foreach( + _.recover{ + case e: java.nio.file.FileAlreadyExistsException => + e.printStackTrace + }.get + ) + return () + } + +}
\ No newline at end of file |