diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-06-14 22:15:52 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-06-15 01:24:46 -0400 |
commit | ee439cdc67034d35762d54a6d87d51844fcf6dde (patch) | |
tree | c6aa1a4663c63f13638b16f263105a6e72f2cf6e /stage2 | |
parent | 8794d3ce0ca7f92df24c317c9a9b7025aa0e3dee (diff) | |
download | cbt-ee439cdc67034d35762d54a6d87d51844fcf6dde.tar.gz cbt-ee439cdc67034d35762d54a6d87d51844fcf6dde.tar.bz2 cbt-ee439cdc67034d35762d54a6d87d51844fcf6dde.zip |
turn Build base classes into traits for less verbosity and uniform usage with any other plugin
Diffstat (limited to 'stage2')
-rw-r--r-- | stage2/BasicBuild.scala | 7 | ||||
-rw-r--r-- | stage2/BuildBuild.scala | 2 | ||||
-rw-r--r-- | stage2/Lib.scala | 6 | ||||
-rw-r--r-- | stage2/PackageJars.scala (renamed from stage2/PackageBuild.scala) | 3 | ||||
-rw-r--r-- | stage2/Publish.scala (renamed from stage2/PublishBuild.scala) | 4 | ||||
-rw-r--r-- | stage2/SbtDependencyDsl.scala | 2 | ||||
-rw-r--r-- | stage2/Scaffold.scala | 14 | ||||
-rw-r--r-- | stage2/mixins.scala | 8 |
8 files changed, 25 insertions, 21 deletions
diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index 978f604..49a73ef 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -10,7 +10,7 @@ import java.util.jar._ import scala.collection.immutable.Seq import scala.util._ -trait Recommended extends BasicBuild{ +trait Recommended extends BaseBuild{ override def scalacOptions = super.scalacOptions ++ Seq( "-feature", "-deprecation", @@ -21,7 +21,10 @@ trait Recommended extends BasicBuild{ "-language:existentials" ) } -class BasicBuild(val context: Context) extends DependencyImplementation with BuildInterface with TriggerLoop with SbtDependencyDsl{ +class BasicBuild(val context: Context) extends BaseBuild +trait BaseBuild extends DependencyImplementation with BuildInterface with TriggerLoop with SbtDependencyDsl{ + def context: Context + // library available to builds implicit protected final val logger: Logger = context.logger implicit protected final val classLoaderCache: ClassLoaderCache = context.classLoaderCache diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala index bab8d88..c6d45d3 100644 --- a/stage2/BuildBuild.scala +++ b/stage2/BuildBuild.scala @@ -3,7 +3,7 @@ import java.io.File import java.nio.file._ import scala.collection.immutable.Seq -class BuildBuild(context: Context) extends BasicBuild(context){ +trait BuildBuild extends BaseBuild{ override def dependencies = super.dependencies :+ context.cbtDependency def managedBuildDirectory: File = lib.realpath( projectDirectory.parent ) diff --git a/stage2/Lib.scala b/stage2/Lib.scala index 2a108ab..cec302a 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -49,7 +49,7 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{ val rootBuildClassName = if( useBasicBuildBuild ) buildBuildClassName else buildClassName try{ - if(useBasicBuildBuild) default( context ) else new cbt.BuildBuild( context.copy( projectDirectory = start ) ) + if(useBasicBuildBuild) default( context ) else new cbt.BasicBuild( context.copy( projectDirectory = start ) ) with BuildBuild } catch { case e:ClassNotFoundException if e.getMessage == rootBuildClassName => throw new Exception(s"no class $rootBuildClassName found in " ++ start.string) @@ -153,8 +153,8 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{ def usage(buildClass: Class[_], show: String): String = { val baseTasks = Seq( classOf[BasicBuild], - classOf[PackageBuild], - classOf[PublishBuild], + classOf[PackageJars], + classOf[Publish], classOf[Recommended] ).flatMap(lib.taskNames).distinct.sorted val thisTasks = lib.taskNames(buildClass) diff baseTasks diff --git a/stage2/PackageBuild.scala b/stage2/PackageJars.scala index 583809c..8e3f424 100644 --- a/stage2/PackageBuild.scala +++ b/stage2/PackageJars.scala @@ -1,7 +1,8 @@ package cbt import java.io.File import scala.collection.immutable.Seq -abstract class PackageBuild(context: Context) extends BasicBuild(context) with ArtifactInfo{ +// would love to call this just `Package` but that conflicts with scala package objects. +trait PackageJars extends BaseBuild with ArtifactInfo{ def name: String def artifactId = name def defaultVersion: String diff --git a/stage2/PublishBuild.scala b/stage2/Publish.scala index d744a08..2f7d2fe 100644 --- a/stage2/PublishBuild.scala +++ b/stage2/Publish.scala @@ -4,7 +4,7 @@ import java.net.URL import java.nio.file.Files.readAllBytes import scala.collection.immutable.Seq -abstract class PublishBuild(context: Context) extends PackageBuild(context){ +trait Publish extends PackageJars{ def description: String def url: URL def developers: Seq[Developer] @@ -40,7 +40,7 @@ abstract class PublishBuild(context: Context) extends PackageBuild(context){ private def snapshotUrl = new URL("https://oss.sonatype.org/content/repositories/snapshots") private def releaseUrl = new URL("https://oss.sonatype.org/service/local/staging/deploy/maven2") def publishUrl = if(version.endsWith("-SNAPSHOT")) snapshotUrl else releaseUrl - override def copy(context: Context) = super.copy(context).asInstanceOf[PublishBuild] + override def copy(context: Context) = super.copy(context).asInstanceOf[Publish] protected def sonatypeCredentials = { // FIXME: this should probably not use cbtHome, but some reference to the system's host cbt diff --git a/stage2/SbtDependencyDsl.scala b/stage2/SbtDependencyDsl.scala index 4c95308..05cb709 100644 --- a/stage2/SbtDependencyDsl.scala +++ b/stage2/SbtDependencyDsl.scala @@ -1,5 +1,5 @@ package cbt -trait SbtDependencyDsl{ self: BasicBuild => +trait SbtDependencyDsl{ self: BaseBuild => /** SBT-like dependency builder DSL for syntax compatibility */ class DependencyBuilder2( groupId: String, artifactId: String, scalaVersion: Option[String] ){ def %(version: String) = scalaVersion.map( diff --git a/stage2/Scaffold.scala b/stage2/Scaffold.scala index 78242fc..2c46d0a 100644 --- a/stage2/Scaffold.scala +++ b/stage2/Scaffold.scala @@ -32,7 +32,7 @@ import java.net.URL import java.io.File import scala.collection.immutable.Seq -class Build( context: Context ) extends BasicBuild( context ){ +class Build(val context: Context) extends BaseBuild{ /* override def dependencies = ( super.dependencies // don't forget super.dependencies here @@ -65,7 +65,7 @@ import java.net.URL import java.io.File import scala.collection.immutable.Seq -class Build( context: Context ) extends BuildBuild( context ){ +class Build(val context: Context) extends BuildBuild{ /* override def dependencies = ( super.dependencies // don't forget super.dependencies here @@ -97,7 +97,7 @@ import java.net.URL import java.io.File import scala.collection.immutable.Seq -class Build(context: Context) extends BuildBuild(context){ +class Build(val context: Context) extends BuildBuild{ override def dependencies = super.dependencies ++ Seq( BuildDependency( projectDirectory.parent ++ "/build-shared") // , "com.lihaoyi" %% "ammonite-ops" % "0.5.5" @@ -117,7 +117,7 @@ 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*/{ +class Build(val context: Context) extends BaseBuild with BuildShared/* with mixins.ScalaTest*/{ // def scalaTestVersion = "2.2.6" override def dependencies = super.dependencies ++ Seq( @@ -131,7 +131,7 @@ import java.net.URL import java.io.File import scala.collection.immutable.Seq -class Build(context: Context) extends BuildBuild(context){ +class Build(val context: Context) extends BuildBuild{ override def scalaVersion: String = "2.11.8" override def dependencies = super.dependencies ++ Seq( @@ -146,7 +146,7 @@ import java.net.URL import java.io.File import scala.collection.immutable.Seq -class Build(context: Context) extends BasicBuild(context){ +class Build(val context: Context) extends BaseBuild{ override def scalaVersion: String = "$scalaVersion" override def dependencies = super.dependencies ++ Seq( // don't forget super.dependencies here @@ -161,7 +161,7 @@ import java.net.URL import java.io.File import scala.collection.immutable.Seq -trait BuildShared extends BasicBuild{ +trait BuildShared extends BaseBuild{ override def scalaVersion: String = "$scalaVersion" override def enableConcurrency = false // enable for speed, disable for debugging diff --git a/stage2/mixins.scala b/stage2/mixins.scala index 70e472f..9d5fdb2 100644 --- a/stage2/mixins.scala +++ b/stage2/mixins.scala @@ -3,7 +3,7 @@ package mixins import java.net.URL import scala.collection.immutable.Seq import java.io._ -trait Test extends BasicBuild{ +trait Test extends BaseBuild{ lazy val testedBuild = BuildDependency( projectDirectory.parent ) override def dependencies = Seq( testedBuild ) ++ super.dependencies override def defaultScalaVersion = testedBuild.build.scalaVersion @@ -12,7 +12,7 @@ trait SbtTest extends Test{ override def sources = Vector( projectDirectory.parent ++ "/src/test/scala" ) } -trait ScalaParadise extends BasicBuild{ +trait ScalaParadise extends BaseBuild{ def scalaParadiseVersion = "2.1.0" private def scalaParadiseDependency = @@ -41,13 +41,13 @@ trait ScalaParadise extends BasicBuild{ ) } -trait Suggested extends BasicBuild{ +trait Suggested extends BaseBuild{ override def scalacOptions = super.scalacOptions ++ Seq( "-language:experimental.macros" ) } -trait Github extends PublishBuild{ +trait Github extends Publish{ def user: String def githubProject = name def githubUser = user |