aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--circle.yml2
-rw-r--r--examples/build-scalajs/build/build/build.scala2
-rw-r--r--examples/scalatest-example/build/build.scala (renamed from examples/build-scalatest/build/build.scala)0
-rw-r--r--examples/scalatest-example/build/build/build.scala (renamed from examples/build-scalatest/build/build/build.scala)0
-rw-r--r--examples/scalatest-example/src/main/scala/Hello.scala (renamed from examples/build-scalatest/src/main/scala/Hello.scala)0
-rw-r--r--examples/scalatest-example/src/test/scala/Test.scala (renamed from examples/build-scalatest/src/test/scala/Test.scala)0
-rw-r--r--nailgun_launcher/Stage0Lib.java7
-rw-r--r--stage1/Stage1.scala7
-rw-r--r--stage2/BasicBuild.scala30
-rw-r--r--stage2/BuildBuild.scala4
-rw-r--r--stage2/BuildDependency.scala4
-rw-r--r--stage2/GitDependency.scala2
-rw-r--r--stage2/Lib.scala23
-rw-r--r--stage2/Scaffold.scala117
-rw-r--r--stage2/ToolsTasks.scala3
-rw-r--r--stage2/mixins.scala57
-rw-r--r--stage2/plugins/AdvancedFlags.scala10
-rw-r--r--stage2/plugins/GithubPom.scala11
-rw-r--r--stage2/plugins/ScalaParadise.scala29
-rw-r--r--stage2/pom.scala3
-rw-r--r--test/build/build.scala2
-rw-r--r--test/multi-build/build/build.scala4
-rw-r--r--test/test.scala5
23 files changed, 99 insertions, 223 deletions
diff --git a/circle.yml b/circle.yml
index 64d62c0..6187f81 100644
--- a/circle.yml
+++ b/circle.yml
@@ -9,10 +9,8 @@ dependencies:
- ./cbt compile
- ./cbt direct
- ./cbt -Dlog=all
- - cd plugins/scalatest/ && ../../cbt compile && cd ../../
test:
override:
- ./cbt direct test
- ./cbt test
- - cd examples/build-scalatest && ../../cbt test && cd ../..
diff --git a/examples/build-scalajs/build/build/build.scala b/examples/build-scalajs/build/build/build.scala
index ca01ba1..d6c2a1b 100644
--- a/examples/build-scalajs/build/build/build.scala
+++ b/examples/build-scalajs/build/build/build.scala
@@ -7,5 +7,5 @@ class Build( context: Context ) extends BuildBuild( context ){
override def dependencies =
super.dependencies :+
- BuildDependency(new File(context.cbtHome + "/plugins/scalajs"))
+ DirectoryDependency(new File(context.cbtHome + "/plugins/scalajs"))
}
diff --git a/examples/build-scalatest/build/build.scala b/examples/scalatest-example/build/build.scala
index 48248fd..48248fd 100644
--- a/examples/build-scalatest/build/build.scala
+++ b/examples/scalatest-example/build/build.scala
diff --git a/examples/build-scalatest/build/build/build.scala b/examples/scalatest-example/build/build/build.scala
index d641b51..d641b51 100644
--- a/examples/build-scalatest/build/build/build.scala
+++ b/examples/scalatest-example/build/build/build.scala
diff --git a/examples/build-scalatest/src/main/scala/Hello.scala b/examples/scalatest-example/src/main/scala/Hello.scala
index 099a84d..099a84d 100644
--- a/examples/build-scalatest/src/main/scala/Hello.scala
+++ b/examples/scalatest-example/src/main/scala/Hello.scala
diff --git a/examples/build-scalatest/src/test/scala/Test.scala b/examples/scalatest-example/src/test/scala/Test.scala
index 48b0a36..48b0a36 100644
--- a/examples/build-scalatest/src/test/scala/Test.scala
+++ b/examples/scalatest-example/src/test/scala/Test.scala
diff --git a/nailgun_launcher/Stage0Lib.java b/nailgun_launcher/Stage0Lib.java
index ae09d78..9c13680 100644
--- a/nailgun_launcher/Stage0Lib.java
+++ b/nailgun_launcher/Stage0Lib.java
@@ -48,7 +48,7 @@ public class Stage0Lib{
public static File write(File file, String content, OpenOption... options) throws Exception{
file.getParentFile().mkdirs();
- Files.write(file.toPath(), content.getBytes());
+ Files.write(file.toPath(), content.getBytes(), options);
return file;
}
@@ -74,7 +74,10 @@ public class Stage0Lib{
"-sbt-interface", earlyDeps.sbtInterface_0_13_9_File,
"-compiler-interface", earlyDeps.compilerInterface_0_13_9_File,
"-cp", classpath,
- "-d", target
+ "-d", target,
+ "-S-deprecation",
+ "-S-feature",
+ "-S-unchecked"
}
)
);
diff --git a/stage1/Stage1.scala b/stage1/Stage1.scala
index 1059647..c94d1a4 100644
--- a/stage1/Stage1.scala
+++ b/stage1/Stage1.scala
@@ -87,7 +87,10 @@ object Stage1{
val paths = CbtPaths(cbtHome, cache)
import paths._
- val stage2sourceFiles = stage2.listFiles.toVector.filter(_.isFile).filter(_.toString.endsWith(".scala"))
+ val stage2sourceFiles = (
+ stage2.listFiles ++ (stage2 ++ "/plugins").listFiles
+ ).toVector.filter(_.isFile).filter(_.toString.endsWith(".scala"))
+
val cbtHasChanged = _cbtChanged || lib.needsUpdate(stage2sourceFiles, stage2StatusFile)
val cls = this.getClass.getClassLoader.loadClass("cbt.NailgunLauncher")
@@ -101,7 +104,7 @@ object Stage1{
stage2sourceFiles, stage2Target, stage2StatusFile,
cbtDependency.dependencyClasspath,
mavenCache,
- Seq("-deprecation"), classLoaderCache,
+ Seq("-deprecation","-feature","-unchecked"), classLoaderCache,
zincVersion = "0.3.9", scalaVersion = constants.scalaVersion
)
diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala
index 4be0e58..42384db 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
@@ -98,7 +87,7 @@ trait BaseBuild extends DependencyImplementation with BuildInterface with Trigge
scalaVersion: String = scalaMajorVersion
) = lib.ScalaDependency( groupId, artifactId, version, classifier, scalaVersion )
- final def BuildDependency(path: File) = cbt.BuildDependency(
+ final def DirectoryDependency(path: File) = cbt.DirectoryDependency(
context.copy( projectDirectory = path, args = Seq() )
)
@@ -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(
@@ -143,9 +136,12 @@ trait BaseBuild extends DependencyImplementation with BuildInterface with Trigge
def runClass: String = "Main"
def run: ExitCode = lib.runMainIfFound( runClass, context.args, classLoader(context.classLoaderCache) )
- def test: Option[ExitCode] = {
- lib.test(context)
- }
+ def test: Option[ExitCode] =
+ Some(new lib.ReflectBuild(
+ DirectoryDependency(projectDirectory++"/test").build
+ ).callNullary(Some("run")))
+ def t = test
+ def rt = recursiveUnsafe(Some("test"))
def recursiveSafe(_run: BuildInterface => Any): ExitCode = {
val builds = (this +: transitiveDependencies).collect{
@@ -192,9 +188,7 @@ trait BaseBuild extends DependencyImplementation with BuildInterface with Trigge
}
def c = compile
- def t = test
def r = run
- def rt = recursiveUnsafe(Some("test"))
/*
context.logger.composition(">"*80)
diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala
index 7eab5e6..db5374c 100644
--- a/stage2/BuildBuild.scala
+++ b/stage2/BuildBuild.scala
@@ -8,8 +8,8 @@ trait BuildBuild extends BaseBuild{
)
object plugins{
- final val scalaTest = BuildDependency( managedContext.cbtHome ++ "/plugins/scalatest" )
- final val sbtLayout = BuildDependency( managedContext.cbtHome ++ "/plugins/sbt_layout" )
+ final val scalaTest = DirectoryDependency( managedContext.cbtHome ++ "/plugins/scalatest" )
+ final val sbtLayout = DirectoryDependency( managedContext.cbtHome ++ "/plugins/sbt_layout" )
}
override def dependencies =
diff --git a/stage2/BuildDependency.scala b/stage2/BuildDependency.scala
index aba35c6..c0b53ad 100644
--- a/stage2/BuildDependency.scala
+++ b/stage2/BuildDependency.scala
@@ -15,7 +15,7 @@ trait TriggerLoop extends DependencyImplementation{
def triggerLoopFiles: Seq[File]
}
/** You likely want to use the factory method in the BasicBuild class instead of this. */
-case class BuildDependency(context: Context) extends TriggerLoop{
+case class DirectoryDependency(context: Context) extends TriggerLoop{
override def show = this.getClass.getSimpleName ++ "(" ++ context.projectDirectory.string ++ ")"
final override lazy val logger = context.logger
final override lazy val lib: Lib = new Lib(logger)
@@ -28,7 +28,7 @@ case class BuildDependency(context: Context) extends TriggerLoop{
def targetClasspath = ClassPath()
}
/*
-case class DependencyOr(first: BuildDependency, second: JavaDependency) extends ProjectProxy with BuildDependencyBase{
+case class DependencyOr(first: DirectoryDependency, second: JavaDependency) extends ProjectProxy with DirectoryDependencyBase{
val isFirst = new File(first.context.projectDirectory).exists
def triggerLoopFiles = if(isFirst) first.triggerLoopFiles else Seq()
protected val delegate = if(isFirst) first else second
diff --git a/stage2/GitDependency.scala b/stage2/GitDependency.scala
index bb3cc63..6510ede 100644
--- a/stage2/GitDependency.scala
+++ b/stage2/GitDependency.scala
@@ -39,7 +39,7 @@ case class GitDependency(
}
private object dependencyCache extends Cache[DependencyImplementation]
def dependency = dependencyCache{
- BuildDependency(
+ DirectoryDependency(
context.copy(
projectDirectory = checkout ++ subDirectory.map("/" ++ _).getOrElse("")
)
diff --git a/stage2/Lib.scala b/stage2/Lib.scala
index 2430c1d..c08657f 100644
--- a/stage2/Lib.scala
+++ b/stage2/Lib.scala
@@ -107,26 +107,6 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{
}
}
- def test( context: Context ): Option[ExitCode] = {
- if((context.projectDirectory ++ "/test").exists){
- val loggers = logger.enabledLoggers.mkString(",")
- // FIXME: this is a hack to pass logger args on to the tests.
- // should probably have a more structured way
- val loggerArg = if(loggers != "") Some("-Dlog="++loggers) else None
-
- logger.lib(s"invoke testDefault( $context )")
- val exitCode: ExitCode =
- new ReflectBuild(
- loadDynamic(
- context.copy( projectDirectory = context.projectDirectory ++ "/test", args = loggerArg.toVector ++ context.args ),
- new BasicBuild(_) with mixins.Test
- )
- ).callNullary( Some("run") )
- logger.lib(s"return testDefault( $context )")
- Some(exitCode)
- } else None
- }
-
// task reflection helpers
def tasks(cls:Class[_]): Map[String, Method] =
Stream
@@ -153,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/Scaffold.scala b/stage2/Scaffold.scala
index 0214a0d..32e474f 100644
--- a/stage2/Scaffold.scala
+++ b/stage2/Scaffold.scala
@@ -24,55 +24,25 @@ trait Scaffold{
)
}
- def createBasicBuild(
+ def createBuild(
projectDirectory: File
): Unit = {
createFile(projectDirectory, "build/build.scala", s"""import cbt._
class Build(val context: Context) extends BaseBuild{
/*
- override def dependencies = (
- super.dependencies // don't forget super.dependencies here
- ++
+ override def dependencies =
+ super.dependencies ++ // don't forget super.dependencies here
+ Seq(
+ // source dependency
+ DirectoryDependency( projectDirectory ++ "/subProject" )
+ ) ++
Resolver( mavenCentral ).bind(
- // automatically add Scala major version to artifact id
- // CBT-style Scala dependency
+ // CBT-style Scala dependencies
ScalaDependency( "com.lihaoyi", "ammonite-ops", "0.5.5" )
- // or SBT-style Scala dependency
- "com.lihaoyi" %% "ammonite-ops" % "0.5.5"
-
- // don't mess with the artifact id
- // CBT-Style Java dependency
MavenDependency( "com.lihaoyi", "ammonite-ops_2.11", "0.5.5" )
- // or SBT-style Java dependency
- "com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5"
- )
- )
- */
-}
-"""
- )
- }
- def createBuildBuild(
- projectDirectory: File
- ): Unit = {
- createFile(projectDirectory, "build/build/build.scala", s"""import cbt._
-class Build(val context: Context) extends BuildBuild{
-/*
- override def dependencies = (
- super.dependencies // don't forget super.dependencies here
- ++
- Resolver( mavenCentral ).bind(
- // automatically add Scala major version to artifact id
- // CBT-style Scala dependency
- ScalaDependency( "com.lihaoyi", "ammonite-ops", "0.5.5" )
- // or SBT-style Scala dependency
+ // SBT-style dependencies
"com.lihaoyi" %% "ammonite-ops" % "0.5.5"
-
- // don't mess with the artifact id
- // CBT-Style Java dependency
- MavenDependency( "com.lihaoyi", "ammonite-ops_2.11", "0.5.5" )
- // or SBT-style Java dependency
"com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5"
)
)
@@ -81,73 +51,4 @@ class Build(val context: Context) extends BuildBuild{
"""
)
}
-
-/*,
-
- "build/build/build.scala" -> s"""import cbt._
-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"
- )
-}
-""",
-
- "test/Main.scala" -> s"""object Main{
- def main( args: Array[String] ) = {
- assert( false, "Go. Write some tests :)!" )
- }
-}
-""",
-
- "test/build/build.scala" -> s"""import cbt._
-class Build(val context: Context) extends BaseBuild with BuildShared/* with 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._
-class Build(val context: Context) extends BuildBuild{
- override def scalaVersion: String = "2.11.8"
-
- override def dependencies = super.dependencies ++ Seq(
- BuildDependency( projectDirectory.parent.parent ++ "/build-shared")
- // , "com.lihaoyi" %% "ammonite-ops" % "0.5.5"
- )
-}
-""",
-
- "build-shared/build/build.scala" -> s"""import cbt._
-class Build(val context: Context) extends BaseBuild{
- 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._
-trait BuildShared extends BaseBuild{
- 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()
-}
-"""*/
-
-} \ No newline at end of file
diff --git a/stage2/ToolsTasks.scala b/stage2/ToolsTasks.scala
index bac3406..2c4978e 100644
--- a/stage2/ToolsTasks.scala
+++ b/stage2/ToolsTasks.scala
@@ -16,8 +16,7 @@ class ToolsTasks(
private def Resolver( urls: URL* ) = MavenResolver(cbtHasChanged,mavenCache,urls: _*)
implicit val logger: Logger = lib.logger
def createMain: Unit = lib.createMain( cwd )
- def createBasicBuild: Unit = lib.createBasicBuild( cwd )
- def createBuildBuild: Unit = lib.createBuildBuild( cwd )
+ def createBuild: Unit = lib.createBuild( cwd )
def resolve = {
ClassPath.flatten(
args(1).split(",").toVector.map{
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()
+ )
+ )
+}
diff --git a/stage2/pom.scala b/stage2/pom.scala
index 610f9f6..b521d51 100644
--- a/stage2/pom.scala
+++ b/stage2/pom.scala
@@ -1,5 +1,6 @@
package cbt
+import java.net.URL
case class Organization(
name: String,
- url: Option[String]
+ url: Option[URL]
)
diff --git a/test/build/build.scala b/test/build/build.scala
index aef96a6..5a138fb 100644
--- a/test/build/build.scala
+++ b/test/build/build.scala
@@ -1,4 +1,4 @@
import cbt._
class Build(val context: cbt.Context) extends BaseBuild{
- override def dependencies = Seq( context.cbtDependency ) ++ super.dependencies
+ override def dependencies = super.dependencies :+ context.cbtDependency
}
diff --git a/test/multi-build/build/build.scala b/test/multi-build/build/build.scala
index 5ab1565..5576a3d 100644
--- a/test/multi-build/build/build.scala
+++ b/test/multi-build/build/build.scala
@@ -1,7 +1,7 @@
import cbt._
class Build(val context: Context) extends BaseBuild{
override def dependencies = Seq(
- BuildDependency(projectDirectory++"/sub1"),
- BuildDependency(projectDirectory++"/sub2")
+ DirectoryDependency(projectDirectory++"/sub1"),
+ DirectoryDependency(projectDirectory++"/sub2")
) ++ super.dependencies
}
diff --git a/test/test.scala b/test/test.scala
index 5a4392f..8c609dd 100644
--- a/test/test.scala
+++ b/test/test.scala
@@ -156,6 +156,11 @@ object Main{
usage("simple-fixed")
compile("simple-fixed")
+ compile("../plugins/sbt_layout")
+ compile("../plugins/scalajs")
+ compile("../plugins/scalatest")
+ compile("../examples/scalatest-example")
+
System.err.println(" DONE!")
System.err.println( successes.toString ++ " succeeded, "++ failures.toString ++ " failed" )
if(failures > 0) System.exit(1) else System.exit(0)