From af5361b7eaeff292f551848d51cc1e8b0a6851c6 Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Sun, 26 Feb 2017 22:52:01 +0800 Subject: `cbt help` like `git help` instead of `cbt usage` --- stage2/BasicBuild.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'stage2/BasicBuild.scala') diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index 8d72f9a..b8a6790 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -32,7 +32,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge s"You need to extend ${lib.buildBuildClassName} in: " + projectDirectory + "/" ++ lib.buildDirectoryName ) - final def usage: String = lib.usage(this.getClass, show) + final def help: String = lib.usage(this.getClass, show) final def taskNames: String = lib.taskNames(this.getClass).sorted.mkString("\n") -- cgit v1.2.3 From 00f1e2719d507261f40a494096487b0f0a4bae2f Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Tue, 21 Feb 2017 12:22:31 +0800 Subject: turn `test` into a subproject for easy access to test’s tasks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- circle.yml | 4 ++-- examples/scalatest-example/build/build.scala | 11 ++++++++--- libraries/eval/build/build.scala | 6 +++--- stage2/BasicBuild.scala | 26 ++++++++++++++++---------- test/build/build.scala | 1 + test/test.scala | 2 +- 6 files changed, 31 insertions(+), 19 deletions(-) (limited to 'stage2/BasicBuild.scala') diff --git a/circle.yml b/circle.yml index a25dc35..d3f66e8 100644 --- a/circle.yml +++ b/circle.yml @@ -13,7 +13,7 @@ dependencies: test: override: - rm ~/.gitconfig # avoid url replacement breaking jgit - - ./cbt direct test: + - ./cbt direct test.run: timeout: 1800 - - ./cbt test: + - ./cbt test.run: timeout: 1800 diff --git a/examples/scalatest-example/build/build.scala b/examples/scalatest-example/build/build.scala index 48248fd..2c0ec21 100644 --- a/examples/scalatest-example/build/build.scala +++ b/examples/scalatest-example/build/build.scala @@ -1,9 +1,14 @@ import cbt._ class Build(val context: Context) extends SbtLayoutMain { outer => - override def test: Option[ExitCode] = Some{ + /* FIXME: calling `cbt rt` for `examples/scalatest-example` leads to +java.lang.Exception: This should never happend. Could not find (org.scala-lang,scala-reflect) in +(org.scala-lang,scala-library) -> BoundMavenDependency(1488121318000,cbt/cache/maven,MavenDependency(org.scala-lang,scala-library,2.11.8,Classifier(None)),Vector(https://repo1.maven.org/maven2)) + at cbt.Stage1Lib$$anonfun$actual$1.apply(Stage1Lib.scala:425) + */ + override def test: Dependency = { new BasicBuild(context) with ScalaTest with SbtLayoutTest{ override def dependencies = outer +: super.dependencies - }.run - } + } + } } diff --git a/libraries/eval/build/build.scala b/libraries/eval/build/build.scala index a869ace..29c6d6f 100644 --- a/libraries/eval/build/build.scala +++ b/libraries/eval/build/build.scala @@ -4,11 +4,11 @@ class Build(val context: Context) extends BaseBuild{ override def dependencies = super.dependencies :+ new ScalaCompilerDependency( context.cbtLastModified, context.paths.mavenCache, scalaVersion ) - override def test: Option[ExitCode] = Some{ + override def test: Dependency = { new BasicBuild(context.copy(workingDirectory = projectDirectory ++ "/test")) with ScalaTest{ override def dependencies = super.dependencies ++ Seq( DirectoryDependency(projectDirectory++"/..") ) - }.run - } + } + } } diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index b8a6790..88f08dc 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -187,16 +187,22 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge } def run: ExitCode = run( context.args: _* ) - - def test: Any = - lib.callReflective( - DirectoryDependency(projectDirectory++"/test").dependency, - Some("run"), - context - ) - - def t = test - def rt = recursiveUnsafe(Some("test")) + def test: Dependency = { + val testDirectory = projectDirectory / "test" + if( (testDirectory / lib.buildDirectoryName / lib.buildFileName).exists ){ + // FIYME: maybe we can make loadRoot(...).finalBuild an Option some + DirectoryDependency( testDirectory ).dependency + } else { + new BasicBuild( context.copy(workingDirectory = testDirectory) ){ + override def dependencies = Seq( + DirectoryDependency(projectDirectory++"/..") + ) + def apply = run + } + } + } + def t: Any = lib.callReflective( test, Some("run"), context ) + def rt = recursiveUnsafe(Some("test.run")) def recursiveSafe(_run: BuildInterface => Any): ExitCode = { val builds = (this +: transitiveDependencies).collect{ diff --git a/test/build/build.scala b/test/build/build.scala index 5a138fb..9e02144 100644 --- a/test/build/build.scala +++ b/test/build/build.scala @@ -1,4 +1,5 @@ import cbt._ class Build(val context: cbt.Context) extends BaseBuild{ override def dependencies = super.dependencies :+ context.cbtDependency + def apply = run } diff --git a/test/test.scala b/test/test.scala index cb3d6d6..818d9df 100644 --- a/test/test.scala +++ b/test/test.scala @@ -338,7 +338,7 @@ object Main{ } { - val res = runCbt("../libraries/eval", Seq("test")) + val res = runCbt("../libraries/eval", Seq("test.run")) assert(res.exit0) assert(res.out.contains("All tests passed"), res.out) } -- cgit v1.2.3 From d0726561bbc5b7464c1a7cbb7e8110216051827d Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Tue, 21 Feb 2017 20:32:24 +0800 Subject: use `name` instead of `projectName` as it is more universal and the term `project` is probably going away in cbt. --- build/build.scala | 2 +- examples/build-info-example/build/build.scala | 2 +- examples/scalajs-plain-example/js/build/build.scala | 4 ++-- examples/scalajs-react-example/js/build/build.scala | 4 ++-- examples/uber-jar-example/README.md | 2 +- examples/uber-jar-example/build/build.scala | 4 ++-- plugins/uber-jar/src/UberJar.scala | 2 +- stage2/BasicBuild.scala | 2 +- tools/gui/resources/template-project/build/build.scala | 2 +- tools/gui/src/ProjectBuilder.scala | 2 +- 10 files changed, 13 insertions(+), 13 deletions(-) (limited to 'stage2/BasicBuild.scala') diff --git a/build/build.scala b/build/build.scala index 6c55e11..b4a39ea 100644 --- a/build/build.scala +++ b/build/build.scala @@ -16,7 +16,7 @@ class Build(val context: Context) extends Publish{ def groupId: String = "org.cvogt" def version: String = "0.9" - def name: String = "cbt" + override def name: String = "cbt" // Members declared in cbt.Publish def description: String = "Fast, intuitive Build Tool for Scala" diff --git a/examples/build-info-example/build/build.scala b/examples/build-info-example/build/build.scala index 4d28598..b5ea86b 100644 --- a/examples/build-info-example/build/build.scala +++ b/examples/build-info-example/build/build.scala @@ -2,7 +2,7 @@ import cbt._ import java.nio.file.Files._ class Build(val context: Context) extends PackageJars{ - def name = "build-info-example" + override def name = "build-info-example" def groupId = "cbt.examples" override def defaultScalaVersion = "2.11.8" def version = "0.1" diff --git a/examples/scalajs-plain-example/js/build/build.scala b/examples/scalajs-plain-example/js/build/build.scala index 06e4876..4c251cd 100644 --- a/examples/scalajs-plain-example/js/build/build.scala +++ b/examples/scalajs-plain-example/js/build/build.scala @@ -1,6 +1,6 @@ import cbt._ class Build(val context: Context) extends ScalaJsBuild{ - override def projectName = "my-project" + override def name = "my-project" override def sources = super.sources ++ Seq( projectDirectory.getParentFile ++ "/shared" @@ -14,5 +14,5 @@ class Build(val context: Context) extends ScalaJsBuild{ ) override def scalaJsTargetFile = - projectDirectory.getParentFile ++ ("/server/public/generated/" ++ projectName ++ ".js") + projectDirectory.getParentFile ++ ("/server/public/generated/" ++ name ++ ".js") } diff --git a/examples/scalajs-react-example/js/build/build.scala b/examples/scalajs-react-example/js/build/build.scala index 6db866b..d8e8c16 100644 --- a/examples/scalajs-react-example/js/build/build.scala +++ b/examples/scalajs-react-example/js/build/build.scala @@ -1,6 +1,6 @@ import cbt._ class Build(val context: Context) extends ScalaJsBuild{ - override def projectName = "my-project" + override def name = "my-project" override def sources = super.sources ++ Seq( projectDirectory.getParentFile ++ "/shared" @@ -17,5 +17,5 @@ class Build(val context: Context) extends ScalaJsBuild{ ) override def scalaJsTargetFile = - projectDirectory.getParentFile ++ ("/server/public/generated/" ++ projectName ++ ".js") + projectDirectory.getParentFile ++ ("/server/public/generated/" ++ name ++ ".js") } diff --git a/examples/uber-jar-example/README.md b/examples/uber-jar-example/README.md index 2460084..e4f8da0 100644 --- a/examples/uber-jar-example/README.md +++ b/examples/uber-jar-example/README.md @@ -4,7 +4,7 @@ This example shows how to build uber jar(aka fat jar) with `UberJar` plugin. In order to create uber jar: execute `cbt uberJar`. Produced jar will be in target folder. -By default, jar name is your `cbt projectName`, you can provide other name via overriding `uberJarName` task. +By default, jar name is your `cbt name`, you can provide other name via overriding `uberJarName` task. By default, main class is `Main`. You can provide custom main class via overriding `uberJarMainClass` task. diff --git a/examples/uber-jar-example/build/build.scala b/examples/uber-jar-example/build/build.scala index fec58ae..181098f 100644 --- a/examples/uber-jar-example/build/build.scala +++ b/examples/uber-jar-example/build/build.scala @@ -2,7 +2,7 @@ import cbt._ class Build(val context: Context) extends BaseBuild with UberJar { - override def projectName: String = "uber-jar-example" + override def name: String = "uber-jar-example" override def dependencies = super.dependencies ++ Resolver( mavenCentral ).bind( @@ -11,6 +11,6 @@ class Build(val context: Context) extends BaseBuild with UberJar { ScalaDependency("org.typelevel", "cats", "0.6.0") ) - override def uberJarName = projectName + "-0.0.1" + ".jar" + override def uberJarName = name + "-0.0.1" + ".jar" } diff --git a/plugins/uber-jar/src/UberJar.scala b/plugins/uber-jar/src/UberJar.scala index 3783367..79b87a1 100644 --- a/plugins/uber-jar/src/UberJar.scala +++ b/plugins/uber-jar/src/UberJar.scala @@ -15,7 +15,7 @@ trait UberJar extends BaseBuild { def uberJarMainClass: Option[String] = runClass - def uberJarName: String = projectName + ".jar" + def uberJarName: String = name + ".jar" } diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index 88f08dc..f7f54a3 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -41,7 +41,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge def defaultScalaVersion: String = constants.scalaVersion final def scalaVersion = context.scalaVersion getOrElse defaultScalaVersion final def scalaMajorVersion: String = lib.libMajorVersion(scalaVersion) - def projectName = "default" + def name = projectDirectory.getName // TODO: get rid of this in favor of newBuild. // currently blocked on DynamicOverride being not parts diff --git a/tools/gui/resources/template-project/build/build.scala b/tools/gui/resources/template-project/build/build.scala index 3ec5db9..b632d97 100644 --- a/tools/gui/resources/template-project/build/build.scala +++ b/tools/gui/resources/template-project/build/build.scala @@ -2,4 +2,4 @@ import cbt._ class Build(val context: Context) extends BaseBuild##with## { -##projectName####dependencies##} +##name####dependencies##} diff --git a/tools/gui/src/ProjectBuilder.scala b/tools/gui/src/ProjectBuilder.scala index ceba376..4204942 100644 --- a/tools/gui/src/ProjectBuilder.scala +++ b/tools/gui/src/ProjectBuilder.scala @@ -95,7 +95,7 @@ class ProjectBuilder( writeTemplate( templateDir / "build" / "build.scala", buildDir / "build.scala", - (name, s""" override def projectName = "$name"$blankLine""", "##projectName##"), + (name, s""" override def name = "$name"$blankLine""", "##name##"), (dependencyString, dependencies + blankLine, "##dependencies##"), (plugins, plugins, "##with##") ) -- cgit v1.2.3 From 7db4ee8ccde8af044c5a6cae33d35492887571a3 Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Mon, 27 Feb 2017 20:13:56 +0800 Subject: move default sourceFileFilter into lib for less OO coupling --- stage2/BasicBuild.scala | 2 +- stage2/Lib.scala | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) (limited to 'stage2/BasicBuild.scala') diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index f7f54a3..b5bca6a 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -85,7 +85,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge def sources: Seq[File] = Seq(defaultSourceDirectory) ++ projectDirectory.listFiles.toVector.filter(sourceFileFilter) /** Which file endings to consider being source files. */ - def sourceFileFilter(file: File): Boolean = file.toString.endsWith(".scala") || file.toString.endsWith(".java") + def sourceFileFilter(file: File) = lib.sourceFileFilter(file) /** Absolute path names for all individual files found in sources directly or contained in directories. */ final def sourceFiles: Seq[File] = lib.sourceFiles(sources, sourceFileFilter) diff --git a/stage2/Lib.scala b/stage2/Lib.scala index 854a50a..33bfe1a 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -285,7 +285,10 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ def dirname(path: File): File = new File(realpath(path).string.stripSuffix("/").split("/").dropRight(1).mkString("/")) def nameAndContents(file: File) = basename(file) -> readAllBytes(file.toPath) - def sourceFiles( sources: Seq[File], sourceFileFilter: File => Boolean ): Seq[File] = { + /** Which file endings to consider being source files. */ + def sourceFileFilter(file: File): Boolean = file.toString.endsWith(".scala") || file.toString.endsWith(".java") + + def sourceFiles( sources: Seq[File], sourceFileFilter: File => Boolean = sourceFileFilter ): Seq[File] = { for { base <- sources.filter(_.exists).map(lib.realpath) file <- base.listRecursive if file.isFile && sourceFileFilter(file) -- cgit v1.2.3 From 03b066827b3d397fb30a689904fa8d55db43fc8e Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Mon, 27 Feb 2017 20:31:32 +0800 Subject: human readable toString for Builds --- stage2/BasicBuild.scala | 1 + 1 file changed, 1 insertion(+) (limited to 'stage2/BasicBuild.scala') diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index b5bca6a..3c3cbec 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -271,6 +271,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with Trigge } override def show = this.getClass.getSimpleName ++ "(" ++ projectDirectory.string ++ ")" + override def toString = show // a method that can be called only to trigger any side-effects final def `void` = () -- cgit v1.2.3