diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-06-07 11:07:09 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-06-15 01:24:46 -0400 |
commit | ad2094b06eb7e313b3655ae0cae98b50787177d3 (patch) | |
tree | 1ea8a3a23991554d248a67c2f89f352609580720 | |
parent | b37e339c41483c15bf14f84be60c8470fd429d77 (diff) | |
download | cbt-ad2094b06eb7e313b3655ae0cae98b50787177d3.tar.gz cbt-ad2094b06eb7e313b3655ae0cae98b50787177d3.tar.bz2 cbt-ad2094b06eb7e313b3655ae0cae98b50787177d3.zip |
separate sbt layout and scalatest plugins and create a more general plugin architecture
-rw-r--r-- | examples/build-scalatest/build/build.scala | 17 | ||||
-rw-r--r-- | examples/build-scalatest/build/build/build.scala | 9 | ||||
-rw-r--r-- | examples/build-scalatest/src/main/scala/Hello.scala | 2 | ||||
-rw-r--r-- | examples/build-scalatest/src/test/scala/Test.scala | 7 | ||||
-rw-r--r-- | plugins/sbt_layout/SbtLayout.scala | 10 | ||||
-rw-r--r-- | plugins/sbt_layout/build/build.scala | 2 | ||||
-rw-r--r-- | plugins/scalajs/build/build.scala | 8 | ||||
-rw-r--r-- | plugins/scalatest/ScalaTest.scala | 27 | ||||
-rw-r--r-- | plugins/scalatest/build/build.scala | 5 | ||||
-rw-r--r-- | stage2/BuildBuild.scala | 17 | ||||
-rw-r--r-- | stage2/Plugin.scala | 4 |
11 files changed, 48 insertions, 60 deletions
diff --git a/examples/build-scalatest/build/build.scala b/examples/build-scalatest/build/build.scala index 29d7bf4..48248fd 100644 --- a/examples/build-scalatest/build/build.scala +++ b/examples/build-scalatest/build/build.scala @@ -1,10 +1,9 @@ import cbt._ -class Build(val context: Context) extends SbtLayout { - - override def dependencies = ( - super.dependencies ++ - Resolver( mavenCentral ).bind( - ScalaDependency("org.scalatest","scalatest","2.2.4") - ) - ) -}
\ No newline at end of file +class Build(val context: Context) extends SbtLayoutMain { + outer => + override def test: Option[ExitCode] = Some{ + new BasicBuild(context) with ScalaTest with SbtLayoutTest{ + override def dependencies = outer +: super.dependencies + }.run + } +} diff --git a/examples/build-scalatest/build/build/build.scala b/examples/build-scalatest/build/build/build.scala index 2aece46..d641b51 100644 --- a/examples/build-scalatest/build/build/build.scala +++ b/examples/build-scalatest/build/build/build.scala @@ -1,11 +1,8 @@ import cbt._ class Build(val context: Context) extends BuildBuild{ - - override def dependencies = ( - super.dependencies ++ - Resolver( mavenCentral ).bind( - ScalaDependency("org.scalatest","scalatest","2.2.4") - ) :+ BuildDependency(new File(context.cbtHome + "/plugins/scalatest")) + override def dependencies = super.dependencies ++ Seq( + plugins.scalaTest, + plugins.sbtLayout ) } diff --git a/examples/build-scalatest/src/main/scala/Hello.scala b/examples/build-scalatest/src/main/scala/Hello.scala index 5e56da4..099a84d 100644 --- a/examples/build-scalatest/src/main/scala/Hello.scala +++ b/examples/build-scalatest/src/main/scala/Hello.scala @@ -1,6 +1,6 @@ object Main extends App{ - println("Hell") + println("Hello World") def square(x: Int) = x * x diff --git a/examples/build-scalatest/src/test/scala/Test.scala b/examples/build-scalatest/src/test/scala/Test.scala index d176080..48b0a36 100644 --- a/examples/build-scalatest/src/test/scala/Test.scala +++ b/examples/build-scalatest/src/test/scala/Test.scala @@ -2,6 +2,9 @@ import collection.mutable.Stack import org.scalatest._ class Test extends FlatSpec with Matchers { + "square" should "return double" in { + Main.square(2) should be (4) + } "A Stack" should "pop values in last-in-first-out order" in { val stack = new Stack[Int] @@ -17,8 +20,4 @@ class Test extends FlatSpec with Matchers { emptyStack.pop() } } - - "square" should "return double" in { - Main.square(2) should be (4) - } }
\ No newline at end of file diff --git a/plugins/sbt_layout/SbtLayout.scala b/plugins/sbt_layout/SbtLayout.scala new file mode 100644 index 0000000..5cd7a03 --- /dev/null +++ b/plugins/sbt_layout/SbtLayout.scala @@ -0,0 +1,10 @@ +package cbt + +trait SbtLayoutTest extends BaseBuild{ + override def sources = Seq(projectDirectory ++ "/src/test/scala") + override def compileTarget = super.compileTarget.getParentFile ++ "/test-classes" +} + +trait SbtLayoutMain extends BaseBuild{ + override def sources = Seq( projectDirectory ++ "/src/main/scala" ) +} diff --git a/plugins/sbt_layout/build/build.scala b/plugins/sbt_layout/build/build.scala new file mode 100644 index 0000000..80ff3ba --- /dev/null +++ b/plugins/sbt_layout/build/build.scala @@ -0,0 +1,2 @@ +import cbt._ +class Build(val context: Context) extends Plugin diff --git a/plugins/scalajs/build/build.scala b/plugins/scalajs/build/build.scala index 9a73704..0205cf8 100644 --- a/plugins/scalajs/build/build.scala +++ b/plugins/scalajs/build/build.scala @@ -1,9 +1,3 @@ import cbt._ -class Build(context: Context) extends BasicBuild(context) { - - override def dependencies = - super.dependencies :+ - context.cbtDependency -} - +class Build(val context: Context) extends Plugin diff --git a/plugins/scalatest/ScalaTest.scala b/plugins/scalatest/ScalaTest.scala index 9335982..ee96431 100644 --- a/plugins/scalatest/ScalaTest.scala +++ b/plugins/scalatest/ScalaTest.scala @@ -1,29 +1,6 @@ -import cbt._ +package cbt import org.scalatest._ -import org.scalatest -/* FIXME: - - Separate out SbtLayout - - Allow depending on this via a git dependency. - Probably by adding support for subfolders to "GitDependency" -*/ - -trait SbtLayout extends BaseBuild{ - outer => - override def sources = Seq( projectDirectory ++ "/src/main/scala" ) - def testSources = projectDirectory ++ "/src/test/scala" - def testDependencies: Seq[Dependency] = Nil - lazy val testBuild = - new BasicBuild(context) with ScalaTest{ - override def sources = Seq(testSources) - override def target = outer.target - override def compileTarget = outer.scalaTarget ++ "/test-classes" - override def dependencies = (outer +: testDependencies) ++ super.dependencies - } - override def test: Option[ExitCode] = - if(testSources.exists) Some( testBuild.run ) - else None -} trait ScalaTest extends BaseBuild{ override def run: ExitCode = { @@ -33,9 +10,11 @@ trait ScalaTest extends BaseBuild{ runSuites( suiteNames.map( loadSuite( _, _classLoader ) ) ) ExitCode.Success } + override def dependencies = super.dependencies ++ Resolver( mavenCentral ).bind( ScalaDependency("org.scalatest","scalatest","2.2.4") ) } object ScalaTestLib{ + import java.io.File def runSuites(suites: Seq[Suite]) = { def color: Boolean = true def durations: Boolean = true diff --git a/plugins/scalatest/build/build.scala b/plugins/scalatest/build/build.scala index 0306ba7..dd21898 100644 --- a/plugins/scalatest/build/build.scala +++ b/plugins/scalatest/build/build.scala @@ -1,10 +1,9 @@ import cbt._ -class Build(val context: Context) extends BaseBuild{ +class Build(val context: Context) extends Plugin{ override def dependencies = super.dependencies ++ Resolver( mavenCentral ).bind( ScalaDependency("org.scalatest","scalatest","2.2.4") - ) :+ - context.cbtDependency + ) } diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala index 8ac619c..7eab5e6 100644 --- a/stage2/BuildBuild.scala +++ b/stage2/BuildBuild.scala @@ -1,18 +1,23 @@ package cbt -import java.io._ import java.nio.file._ trait BuildBuild extends BaseBuild{ + private final val managedContext = context.copy( + projectDirectory = managedBuildDirectory, + parentBuild=Some(this) + ) + + object plugins{ + final val scalaTest = BuildDependency( managedContext.cbtHome ++ "/plugins/scalatest" ) + final val sbtLayout = BuildDependency( managedContext.cbtHome ++ "/plugins/sbt_layout" ) + } + override def dependencies = super.dependencies :+ context.cbtDependency - def managedBuildDirectory: File = lib.realpath( projectDirectory.parent ) + def managedBuildDirectory: java.io.File = lib.realpath( projectDirectory.parent ) private object managedBuildCache extends Cache[BuildInterface] def managedBuild = managedBuildCache{ try{ - val managedContext = context.copy( - projectDirectory = managedBuildDirectory, - parentBuild=Some(this) - ) val managedBuildFile = projectDirectory++"/build.scala" logger.composition("Loading build at "++managedContext.projectDirectory.toString) ( diff --git a/stage2/Plugin.scala b/stage2/Plugin.scala new file mode 100644 index 0000000..94a8749 --- /dev/null +++ b/stage2/Plugin.scala @@ -0,0 +1,4 @@ +package cbt +trait Plugin extends BaseBuild{ + override def dependencies = super.dependencies :+ context.cbtDependency +} |