From 0f5300349539bfa9642dca7ac7800614a57f316f Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Sun, 19 Jun 2016 16:15:21 -0400 Subject: built-in plugin structure improvements - move plugins into cbt namespace - enable scalac warnings in builds by default - merged language flags into AdvancedScala trait --- stage2/BasicBuild.scala | 17 ++++-------- stage2/Lib.scala | 3 +- stage2/mixins.scala | 57 -------------------------------------- stage2/plugins/AdvancedFlags.scala | 10 +++++++ stage2/plugins/GithubPom.scala | 11 ++++++++ stage2/plugins/ScalaParadise.scala | 29 +++++++++++++++++++ 6 files changed, 56 insertions(+), 71 deletions(-) delete mode 100644 stage2/mixins.scala create mode 100644 stage2/plugins/AdvancedFlags.scala create mode 100644 stage2/plugins/GithubPom.scala create mode 100644 stage2/plugins/ScalaParadise.scala (limited to 'stage2') diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index 2083acc..3784d58 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -9,17 +9,6 @@ import java.util.jar._ import scala.util._ -trait Recommended extends BaseBuild{ - override def scalacOptions = super.scalacOptions ++ Seq( - "-feature", - "-deprecation", - "-unchecked", - "-language:postfixOps", - "-language:implicitConversions", - "-language:higherKinds", - "-language:existentials" - ) -} class BasicBuild(val context: Context) extends BaseBuild trait BaseBuild extends DependencyImplementation with BuildInterface with TriggerLoop with SbtDependencyDsl{ def context: Context @@ -120,7 +109,11 @@ trait BaseBuild extends DependencyImplementation with BuildInterface with Trigge // ========== compile, run, test ========== /** scalac options used for zinc and scaladoc */ - def scalacOptions: Seq[String] = Seq() + def scalacOptions: Seq[String] = Seq( + "-feature", + "-deprecation", + "-unchecked" + ) private object needsUpdateCache extends Cache[Boolean] def needsUpdate: Boolean = needsUpdateCache( diff --git a/stage2/Lib.scala b/stage2/Lib.scala index 1cbff9a..c08657f 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -133,8 +133,7 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{ val baseTasks = Seq( classOf[BasicBuild], classOf[PackageJars], - classOf[Publish], - classOf[Recommended] + classOf[Publish] ).flatMap(lib.taskNames).distinct.sorted val thisTasks = lib.taskNames(buildClass) diff baseTasks ( diff --git a/stage2/mixins.scala b/stage2/mixins.scala deleted file mode 100644 index 221fcc5..0000000 --- a/stage2/mixins.scala +++ /dev/null @@ -1,57 +0,0 @@ -package cbt -package mixins -import java.net.URL -import java.io._ -trait Test extends BaseBuild{ - lazy val testedBuild = BuildDependency( projectDirectory.parent ) - override def dependencies = Seq( testedBuild ) ++ super.dependencies - override def defaultScalaVersion = testedBuild.build.scalaVersion -} -trait SbtTest extends Test{ - override def sources = Vector( projectDirectory.parent ++ "/src/test/scala" ) -} - -trait ScalaParadise extends BaseBuild{ - def scalaParadiseVersion = "2.1.0" - - private def scalaParadiseDependency = - Resolver( mavenCentral ).bindOne( - "org.scalamacros" % ("paradise_" ++ scalaVersion) % scalaParadiseVersion - ) - - override def dependencies = ( - super.dependencies // don't forget super.dependencies here - ++ ( - if(scalaVersion.startsWith("2.10.")) - Seq(scalaParadiseDependency) - else - Seq() - ) - ) - - override def scalacOptions = ( - super.scalacOptions - ++ ( - if(scalaVersion.startsWith("2.10.")) - Seq("-Xplugin:"++scalaParadiseDependency.exportedClasspath.string) - else - Seq() - ) - ) -} - -trait Suggested extends BaseBuild{ - override def scalacOptions = super.scalacOptions ++ Seq( - "-language:experimental.macros" - ) -} - -trait Github extends Publish{ - def user: String - def githubProject = name - def githubUser = user - final def githubUserProject = githubUser ++ "/" ++ githubProject - override def url = new URL(s"http://github.com/$githubUserProject") - override def scmUrl = s"git@github.com:$githubUserProject.git" - override def scmConnection = s"scm:git:$scmUrl" -} diff --git a/stage2/plugins/AdvancedFlags.scala b/stage2/plugins/AdvancedFlags.scala new file mode 100644 index 0000000..4ff701d --- /dev/null +++ b/stage2/plugins/AdvancedFlags.scala @@ -0,0 +1,10 @@ +package cbt +trait AdvancedScala extends BaseBuild{ + override def scalacOptions = super.scalacOptions ++ Seq( + "-language:postfixOps", + "-language:implicitConversions", + "-language:higherKinds", + "-language:existentials", + "-language:experimental.macros" + ) +} diff --git a/stage2/plugins/GithubPom.scala b/stage2/plugins/GithubPom.scala new file mode 100644 index 0000000..8b11385 --- /dev/null +++ b/stage2/plugins/GithubPom.scala @@ -0,0 +1,11 @@ +package cbt +import java.net.URL +trait GithubPom extends Publish{ + def user: String + def githubProject = name + def githubUser = user + final def githubUserProject = githubUser ++ "/" ++ githubProject + override def url = new URL(s"http://github.com/$githubUserProject") + override def scmUrl = s"git@github.com:$githubUserProject.git" + override def scmConnection = s"scm:git:$scmUrl" +} diff --git a/stage2/plugins/ScalaParadise.scala b/stage2/plugins/ScalaParadise.scala new file mode 100644 index 0000000..28ee934 --- /dev/null +++ b/stage2/plugins/ScalaParadise.scala @@ -0,0 +1,29 @@ +package cbt +trait ScalaParadise extends BaseBuild{ + def scalaParadiseVersion = "2.1.0" + + private def scalaParadiseDependency = + Resolver( mavenCentral ).bindOne( + "org.scalamacros" % ("paradise_" ++ scalaVersion) % scalaParadiseVersion + ) + + override def dependencies = ( + super.dependencies // don't forget super.dependencies here + ++ ( + if(scalaVersion.startsWith("2.10.")) + Seq(scalaParadiseDependency) + else + Seq() + ) + ) + + override def scalacOptions = ( + super.scalacOptions + ++ ( + if(scalaVersion.startsWith("2.10.")) + Seq("-Xplugin:"++scalaParadiseDependency.jar.string) + else + Seq() + ) + ) +} -- cgit v1.2.3