From b1db36baebe1f76a39e8bd1a89892465c70b69be Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Sat, 12 Nov 2016 18:51:33 -0500 Subject: rename folder of one example as preparation for creating another one showing how to do the same in a single build --- examples/multi-standalone-example/build/build.scala | 10 ++++++++++ examples/multi-standalone-example/build/build/build.scala | 10 ++++++++++ examples/multi-standalone-example/common/SomeSharedClass.scala | 1 + examples/multi-standalone-example/common/build/build.scala | 3 +++ .../multi-standalone-example/common/build/build/build.scala | 10 ++++++++++ .../multi-standalone-example/shared-build/SharedCbtBuild.scala | 4 ++++ .../multi-standalone-example/shared-build/build/build.scala | 6 ++++++ examples/multi-standalone-example/sub1/SomeConcreteClass.scala | 1 + examples/multi-standalone-example/sub1/build/build.scala | 10 ++++++++++ examples/multi-standalone-example/sub1/build/build/build.scala | 10 ++++++++++ .../multi-standalone-example/sub2/SomeOtherConcreteClass.scala | 1 + examples/multi-standalone-example/sub2/build/build.scala | 10 ++++++++++ examples/multi-standalone-example/sub2/build/build/build.scala | 10 ++++++++++ 13 files changed, 86 insertions(+) create mode 100644 examples/multi-standalone-example/build/build.scala create mode 100644 examples/multi-standalone-example/build/build/build.scala create mode 100644 examples/multi-standalone-example/common/SomeSharedClass.scala create mode 100644 examples/multi-standalone-example/common/build/build.scala create mode 100644 examples/multi-standalone-example/common/build/build/build.scala create mode 100644 examples/multi-standalone-example/shared-build/SharedCbtBuild.scala create mode 100644 examples/multi-standalone-example/shared-build/build/build.scala create mode 100644 examples/multi-standalone-example/sub1/SomeConcreteClass.scala create mode 100644 examples/multi-standalone-example/sub1/build/build.scala create mode 100644 examples/multi-standalone-example/sub1/build/build/build.scala create mode 100644 examples/multi-standalone-example/sub2/SomeOtherConcreteClass.scala create mode 100644 examples/multi-standalone-example/sub2/build/build.scala create mode 100644 examples/multi-standalone-example/sub2/build/build/build.scala (limited to 'examples/multi-standalone-example') diff --git a/examples/multi-standalone-example/build/build.scala b/examples/multi-standalone-example/build/build.scala new file mode 100644 index 0000000..9a67488 --- /dev/null +++ b/examples/multi-standalone-example/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ +class Build(val context: Context) extends SharedCbtBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory ++ "/sub1" ), + DirectoryDependency( projectDirectory ++ "/sub2" ) + ) +} diff --git a/examples/multi-standalone-example/build/build/build.scala b/examples/multi-standalone-example/build/build/build.scala new file mode 100644 index 0000000..be72a13 --- /dev/null +++ b/examples/multi-standalone-example/build/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory.getParentFile ++ "/shared-build" ) + ) +} diff --git a/examples/multi-standalone-example/common/SomeSharedClass.scala b/examples/multi-standalone-example/common/SomeSharedClass.scala new file mode 100644 index 0000000..1f32c5a --- /dev/null +++ b/examples/multi-standalone-example/common/SomeSharedClass.scala @@ -0,0 +1 @@ +class SomeSharedClass \ No newline at end of file diff --git a/examples/multi-standalone-example/common/build/build.scala b/examples/multi-standalone-example/common/build/build.scala new file mode 100644 index 0000000..0fbea50 --- /dev/null +++ b/examples/multi-standalone-example/common/build/build.scala @@ -0,0 +1,3 @@ +import cbt._ + +class Build(val context: Context) extends SharedCbtBuild diff --git a/examples/multi-standalone-example/common/build/build/build.scala b/examples/multi-standalone-example/common/build/build/build.scala new file mode 100644 index 0000000..efeeb77 --- /dev/null +++ b/examples/multi-standalone-example/common/build/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory.getParentFile.getParentFile ++ "/shared-build" ) + ) +} diff --git a/examples/multi-standalone-example/shared-build/SharedCbtBuild.scala b/examples/multi-standalone-example/shared-build/SharedCbtBuild.scala new file mode 100644 index 0000000..38e4cc1 --- /dev/null +++ b/examples/multi-standalone-example/shared-build/SharedCbtBuild.scala @@ -0,0 +1,4 @@ +import cbt._ +trait SharedCbtBuild extends BaseBuild{ + override def defaultScalaVersion = "2.10.6" +} \ No newline at end of file diff --git a/examples/multi-standalone-example/shared-build/build/build.scala b/examples/multi-standalone-example/shared-build/build/build.scala new file mode 100644 index 0000000..332519e --- /dev/null +++ b/examples/multi-standalone-example/shared-build/build/build.scala @@ -0,0 +1,6 @@ +import cbt._ +class Build(val context: Context) extends BaseBuild{ + override def dependencies = + super.dependencies :+ // don't forget super.dependencies here + context.cbtDependency +} diff --git a/examples/multi-standalone-example/sub1/SomeConcreteClass.scala b/examples/multi-standalone-example/sub1/SomeConcreteClass.scala new file mode 100644 index 0000000..2f8f715 --- /dev/null +++ b/examples/multi-standalone-example/sub1/SomeConcreteClass.scala @@ -0,0 +1 @@ +class SomeConcreteClass extends SomeSharedClass diff --git a/examples/multi-standalone-example/sub1/build/build.scala b/examples/multi-standalone-example/sub1/build/build.scala new file mode 100644 index 0000000..2c39a54 --- /dev/null +++ b/examples/multi-standalone-example/sub1/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ + +class Build(val context: Context) extends SharedCbtBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory.getParentFile ++ "/common" ) + ) +} diff --git a/examples/multi-standalone-example/sub1/build/build/build.scala b/examples/multi-standalone-example/sub1/build/build/build.scala new file mode 100644 index 0000000..efeeb77 --- /dev/null +++ b/examples/multi-standalone-example/sub1/build/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory.getParentFile.getParentFile ++ "/shared-build" ) + ) +} diff --git a/examples/multi-standalone-example/sub2/SomeOtherConcreteClass.scala b/examples/multi-standalone-example/sub2/SomeOtherConcreteClass.scala new file mode 100644 index 0000000..56b0aa3 --- /dev/null +++ b/examples/multi-standalone-example/sub2/SomeOtherConcreteClass.scala @@ -0,0 +1 @@ +class SomeOtherConcreteClass extends SomeSharedClass diff --git a/examples/multi-standalone-example/sub2/build/build.scala b/examples/multi-standalone-example/sub2/build/build.scala new file mode 100644 index 0000000..2c39a54 --- /dev/null +++ b/examples/multi-standalone-example/sub2/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ + +class Build(val context: Context) extends SharedCbtBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory.getParentFile ++ "/common" ) + ) +} diff --git a/examples/multi-standalone-example/sub2/build/build/build.scala b/examples/multi-standalone-example/sub2/build/build/build.scala new file mode 100644 index 0000000..efeeb77 --- /dev/null +++ b/examples/multi-standalone-example/sub2/build/build/build.scala @@ -0,0 +1,10 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild{ + override def dependencies = + super.dependencies ++ // don't forget super.dependencies here + Seq( + // source dependency + DirectoryDependency( projectDirectory.getParentFile.getParentFile ++ "/shared-build" ) + ) +} -- cgit v1.2.3 From 9f89d16aa3ca5f96d73a8394d5159dc78dd5d7cf Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Sun, 13 Nov 2016 13:28:36 -0500 Subject: multi-project build example using a single build file --- examples/multi-combined-example/Readme.md | 1 + examples/multi-combined-example/build/build.scala | 44 ++++++++++++++++++++++ .../shared/SomeSharedClass.scala | 6 +++ .../sub1/SomeConcreteClass.scala | 2 + .../sub2/SomeOtherConcreteClass.scala | 2 + examples/multi-standalone-example/Readme.md | 3 ++ stage2/Lib.scala | 2 +- test/test.scala | 1 + 8 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 examples/multi-combined-example/Readme.md create mode 100644 examples/multi-combined-example/build/build.scala create mode 100644 examples/multi-combined-example/shared/SomeSharedClass.scala create mode 100644 examples/multi-combined-example/sub1/SomeConcreteClass.scala create mode 100644 examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala create mode 100644 examples/multi-standalone-example/Readme.md (limited to 'examples/multi-standalone-example') diff --git a/examples/multi-combined-example/Readme.md b/examples/multi-combined-example/Readme.md new file mode 100644 index 0000000..01302d4 --- /dev/null +++ b/examples/multi-combined-example/Readme.md @@ -0,0 +1 @@ +This is an example how to do a multi-project build with a single build file. diff --git a/examples/multi-combined-example/build/build.scala b/examples/multi-combined-example/build/build.scala new file mode 100644 index 0000000..41c03d6 --- /dev/null +++ b/examples/multi-combined-example/build/build.scala @@ -0,0 +1,44 @@ +import cbt._ +import cbt._ +trait SharedCbtBuild extends BaseBuild{ + override def defaultScalaVersion = "2.10.6" +} + + +class Shared(val context: Context) extends SharedCbtBuild + +class Sub(val context:Context) extends SharedCbtBuild{ + override def dependencies = Seq(new Shared( + context.copy( + projectDirectory = projectDirectory ++ "/../shared" + ) + )) +} + +class Build(val context: Context) extends BaseBuild{ + /* + 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( + projectDirectory = projectDirectory ++ "/sub1" + ) + ) + def sub2 = new Sub( + context.copy( + projectDirectory = projectDirectory ++ "/sub2" + ) + ) + + def sub3 = // DON'T DO THIS, anonymous classes are currently not supported here. + new SharedCbtBuild{ + def context = Build.this.context.copy( + projectDirectory = Build.this.projectDirectory ++ "/sub3" + ) + } + + override def dependencies = Seq( sub1, sub2 ) // assembles all projects +} diff --git a/examples/multi-combined-example/shared/SomeSharedClass.scala b/examples/multi-combined-example/shared/SomeSharedClass.scala new file mode 100644 index 0000000..d7d99e4 --- /dev/null +++ b/examples/multi-combined-example/shared/SomeSharedClass.scala @@ -0,0 +1,6 @@ +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 new file mode 100644 index 0000000..e55cb12 --- /dev/null +++ b/examples/multi-combined-example/sub1/SomeConcreteClass.scala @@ -0,0 +1,2 @@ +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 new file mode 100644 index 0000000..399aee6 --- /dev/null +++ b/examples/multi-combined-example/sub2/SomeOtherConcreteClass.scala @@ -0,0 +1,2 @@ +package cbt.examples.multi_combined +object SomeOtherConcreteClass extends SomeSharedClass diff --git a/examples/multi-standalone-example/Readme.md b/examples/multi-standalone-example/Readme.md new file mode 100644 index 0000000..be89598 --- /dev/null +++ b/examples/multi-standalone-example/Readme.md @@ -0,0 +1,3 @@ +This is an example how to build a multi-project build using CBT while keeping each project self-contained with it's own build files. + +Check the multi-combined-example for how to do it with a single build file for all builds together instead. diff --git a/stage2/Lib.scala b/stage2/Lib.scala index dfb7ef3..fcf2642 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -181,7 +181,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger) with Scaffold{ case code if code.getClass.getSimpleName == "ExitCode" => // FIXME: ExitCode needs to be part of the compatibility interfaces ExitCode(Stage0Lib.get(code,"integer").asInstanceOf[Int]) - case Seq(b:BaseBuild) => + case b: BaseBuild => val context = b.context.copy(args=b.context.args.drop(1)) val task = b.context.args.lift(0) new ReflectBuild( b.copy(context=context) ).callNullary( task ) diff --git a/test/test.scala b/test/test.scala index 22b7c87..ca9d87b 100644 --- a/test/test.scala +++ b/test/test.scala @@ -205,6 +205,7 @@ object Main{ compile("../examples/scalajs-react-example/js") compile("../examples/scalajs-react-example/jvm") compile("../examples/multi-standalone-example") + compile("../examples/multi-combined-example") if(sys.props("java.version").startsWith("1.7")){ System.err.println("\nskipping dotty tests on Java 7") } else { -- cgit v1.2.3