aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-02-18 01:35:36 +0000
committerChristopher Vogt <oss.nsp@cvogt.org>2017-02-18 01:35:36 +0000
commita849c89dfde99076902c39f14cefb3b24f9bd5d5 (patch)
treee6c1611be8a7b4420bf2c4451d20a810b3f6bc1c /examples
parentc9d6afb6f139e7dd4dbe3b1e474f4383570b5ff7 (diff)
downloadcbt-a849c89dfde99076902c39f14cefb3b24f9bd5d5.tar.gz
cbt-a849c89dfde99076902c39f14cefb3b24f9bd5d5.tar.bz2
cbt-a849c89dfde99076902c39f14cefb3b24f9bd5d5.zip
demonstrate all the different multi-project-build and composition features
this should probably be cleaned up and made more explainatory, but seems like at least all the cases are there
Diffstat (limited to 'examples')
-rw-r--r--examples/multi-combined-example/build/build.scala67
-rw-r--r--examples/multi-combined-example/build/build/build.scala8
-rw-r--r--examples/multi-combined-example/shared/SomeSharedClass.scala2
-rw-r--r--examples/multi-combined-example/sub1/SomeConcreteClass.scala2
-rw-r--r--examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala7
-rw-r--r--examples/multi-combined-example/sub3/Main.scala6
-rw-r--r--examples/multi-combined-example/sub4/Class4.scala2
-rw-r--r--examples/multi-combined-example/sub4/build/build.scala13
-rw-r--r--examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala2
-rw-r--r--examples/multi-combined-example/sub5/Main.scala6
-rw-r--r--examples/multi-combined-example/sub6/Sub6Example.scala2
11 files changed, 92 insertions, 25 deletions
diff --git a/examples/multi-combined-example/build/build.scala b/examples/multi-combined-example/build/build.scala
index 7d1ff9f..bdeacc7 100644
--- a/examples/multi-combined-example/build/build.scala
+++ b/examples/multi-combined-example/build/build.scala
@@ -1,44 +1,69 @@
+package cbt_build.cbt_examples.multi_combined_example
import cbt._
-import cbt._
-trait SharedCbtBuild extends BaseBuild{
+
+trait ScalaVersion extends BaseBuild{
override def defaultScalaVersion = "2.10.6"
}
+trait SharedBuild extends ScalaVersion{
+ override def dependencies: Seq[Dependency] = Seq( new SharedDependency(context) )
+ // Type-safe embedding of other build. Requires dependency in build/build/build.scala
+ def sub4 = new cbt_build.cbt_examples.multi_combined_example.sub4.Build(
+ // currently you'll have to provide the correct working directory for that build here
+ context.copy( workingDirectory = projectDirectory / "sub4" )
+ )
+ def sub6 = DirectoryDependency(context.workingDirectory / "sub6")
+}
-class Shared(val context: Context) extends SharedCbtBuild
+class SharedDependency(val context: Context) extends ScalaVersion{
+ override def projectDirectory = context.workingDirectory / "shared"
+}
-class Sub(val context:Context) extends SharedCbtBuild{
- override def dependencies = Seq(new Shared(
- context.copy(
- workingDirectory = projectDirectory ++ "/../shared"
- )
- ))
+class Sub1(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub1"
}
-class Build(val context: Context) extends BaseBuild{
+class Sub2(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub2"
+ override def dependencies = super.dependencies ++ Seq( sub6 )
+}
+
+class Sub3(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub3"
+ override def dependencies = Seq(
+ // Embed another sub build reflectively. Convenient for simple dependencies
+ DirectoryDependency(context.workingDirectory / "sub4", "sub41", "sub42")
+ )
+}
+
+class Sub5(val context: Context) extends SharedBuild{
+ override def projectDirectory = context.workingDirectory / "sub5"
+ override def dependencies = Seq( sub4.sub41.sub42 )
+}
+
+class Build(val context: Context) extends SharedBuild{
/*
Currently each sub build nested into the main build needs to be an instance
of a top-level class taking a Context as the sole parameter, similar to the
Build class itself. This restriction may be lifted for more flexibility at
some point, see https://github.com/cvogt/cbt/issues/306
*/
- def sub1 = new Sub(
- context.copy(
- workingDirectory = projectDirectory ++ "/sub1"
- )
- )
- def sub2 = new Sub(
- context.copy(
- workingDirectory = projectDirectory ++ "/sub2"
- )
- )
+ def sub1 = new Sub1(context)
+ def sub2 = new Sub2(context)
+ def sub3 = new Sub3(context)
+ def sub5 = new Sub3(context)
+
+ def helloFromSub42 = sub4.sub41.sub42.hello
- def sub3 = // DON'T DO THIS, anonymous classes are currently not supported here.
+ /*
+ // DON'T DO THIS, anonymous classes are currently not supported here.
+ def sub3 =
new SharedCbtBuild{
def context = Build.this.context.copy(
workingDirectory = Build.this.projectDirectory ++ "/sub3"
)
}
+ */
override def dependencies = Seq( sub1, sub2 ) // assembles all projects
}
diff --git a/examples/multi-combined-example/build/build/build.scala b/examples/multi-combined-example/build/build/build.scala
new file mode 100644
index 0000000..b87351d
--- /dev/null
+++ b/examples/multi-combined-example/build/build/build.scala
@@ -0,0 +1,8 @@
+package cbt_build.cbt_examples.multi_combined_example.build
+import cbt._
+class Build(val context: Context) extends BuildBuild{
+ //println(DirectoryDependency( projectDirectory / ".." / "sub4" / "build" ).dependency.exportedClasspath)
+ override def dependencies: Seq[cbt.Dependency] =
+ super.dependencies :+ DirectoryDependency( projectDirectory / ".." / "sub4" / "build" ).dependency
+ def foo = DirectoryDependency( projectDirectory / ".." / "sub4" / "build" )
+}
diff --git a/examples/multi-combined-example/shared/SomeSharedClass.scala b/examples/multi-combined-example/shared/SomeSharedClass.scala
index d7d99e4..339d45d 100644
--- a/examples/multi-combined-example/shared/SomeSharedClass.scala
+++ b/examples/multi-combined-example/shared/SomeSharedClass.scala
@@ -1,4 +1,4 @@
-package cbt.examples.multi_combined
+package cbt_examples.multi_combined
class SomeSharedClass{
def main(args: Array[String]): Unit = {
println(this.getClass.getSimpleName)
diff --git a/examples/multi-combined-example/sub1/SomeConcreteClass.scala b/examples/multi-combined-example/sub1/SomeConcreteClass.scala
index e55cb12..8039e13 100644
--- a/examples/multi-combined-example/sub1/SomeConcreteClass.scala
+++ b/examples/multi-combined-example/sub1/SomeConcreteClass.scala
@@ -1,2 +1,2 @@
-package cbt.examples.multi_combined
+package cbt_examples.multi_combined
object SomeConcreteClass extends SomeSharedClass
diff --git a/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala b/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala
index 399aee6..e339e24 100644
--- a/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala
+++ b/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala
@@ -1,2 +1,5 @@
-package cbt.examples.multi_combined
-object SomeOtherConcreteClass extends SomeSharedClass
+package cbt_examples.multi_combined
+object SomeOtherConcreteClass extends SomeSharedClass{
+ new cbt_examples.multi_combined_example.sub6.Sub6Example
+}
+
diff --git a/examples/multi-combined-example/sub3/Main.scala b/examples/multi-combined-example/sub3/Main.scala
new file mode 100644
index 0000000..00f8f77
--- /dev/null
+++ b/examples/multi-combined-example/sub3/Main.scala
@@ -0,0 +1,6 @@
+package cbt_examples.multi_combined_example.sub3
+object Main{
+ def main( args: Array[String] ): Unit = {
+ println( Console.GREEN ++ "Hello " ++ Console.RESET + new cbt_examples.multi_combined_example.sub4.sub41.sub42.Sub4Example )
+ }
+}
diff --git a/examples/multi-combined-example/sub4/Class4.scala b/examples/multi-combined-example/sub4/Class4.scala
new file mode 100644
index 0000000..d937122
--- /dev/null
+++ b/examples/multi-combined-example/sub4/Class4.scala
@@ -0,0 +1,2 @@
+package cbt_examples.multi_combined_example.sub4
+class Sub4Example
diff --git a/examples/multi-combined-example/sub4/build/build.scala b/examples/multi-combined-example/sub4/build/build.scala
new file mode 100644
index 0000000..df5b689
--- /dev/null
+++ b/examples/multi-combined-example/sub4/build/build.scala
@@ -0,0 +1,13 @@
+package cbt_build.cbt_examples.multi_combined_example.sub4
+import cbt._
+class Build(val context: Context) extends BaseBuild{
+ def sub41 = new Sub41(context)
+}
+class Sub41(val context: Context) extends BaseBuild{
+ override def projectDirectory = context.workingDirectory / "sub41"
+ def sub42 = new Sub42(context.copy(workingDirectory=projectDirectory))
+}
+class Sub42(val context: Context) extends BaseBuild{
+ override def projectDirectory = context.workingDirectory / "sub42"
+ def hello = "Hello from Sub42"
+}
diff --git a/examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala b/examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala
new file mode 100644
index 0000000..a4ea402
--- /dev/null
+++ b/examples/multi-combined-example/sub4/sub41/sub42/Sub4Example.scala
@@ -0,0 +1,2 @@
+package cbt_examples.multi_combined_example.sub4.sub41.sub42
+class Sub4Example
diff --git a/examples/multi-combined-example/sub5/Main.scala b/examples/multi-combined-example/sub5/Main.scala
new file mode 100644
index 0000000..6035cc2
--- /dev/null
+++ b/examples/multi-combined-example/sub5/Main.scala
@@ -0,0 +1,6 @@
+package cbt_examples.multi_combined_example.sub5
+object Main{
+ def main( args: Array[String] ): Unit = {
+ println( Console.GREEN ++ "Hello " ++ Console.RESET ++ new cbt.examples.multi_combined_example.sub4.sub41.sub42.Sub4Example )
+ }
+}
diff --git a/examples/multi-combined-example/sub6/Sub6Example.scala b/examples/multi-combined-example/sub6/Sub6Example.scala
new file mode 100644
index 0000000..bab5993
--- /dev/null
+++ b/examples/multi-combined-example/sub6/Sub6Example.scala
@@ -0,0 +1,2 @@
+package cbt_examples.multi_combined_example.sub6
+class Sub6Example