From e174d1db2b27a2a9018169cb0dc03635df8de11d Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Wed, 5 Apr 2017 01:55:57 +0000 Subject: Add ScalaXRay (sxr) plugin --- examples/scala-xray/build/build.scala | 3 ++ examples/scala-xray/src/Main.scala | 6 ++++ internal/plugins/library/Library.scala | 2 +- internal/plugins/shared/Shared.scala | 2 +- libraries/file/file.scala | 5 ++-- ports/scala-xray/build/build.scala | 54 ++++++++++++++++++++++++++++++++++ stage2/plugins/ScalaXRay.scala | 17 +++++++++++ stage2/ports.scala | 1 + 8 files changed, 86 insertions(+), 4 deletions(-) create mode 100644 examples/scala-xray/build/build.scala create mode 100644 examples/scala-xray/src/Main.scala create mode 100644 ports/scala-xray/build/build.scala create mode 100644 stage2/plugins/ScalaXRay.scala diff --git a/examples/scala-xray/build/build.scala b/examples/scala-xray/build/build.scala new file mode 100644 index 0000000..6136415 --- /dev/null +++ b/examples/scala-xray/build/build.scala @@ -0,0 +1,3 @@ +package tut_build +import cbt._ +class Build(val context: Context) extends ScalaXRay diff --git a/examples/scala-xray/src/Main.scala b/examples/scala-xray/src/Main.scala new file mode 100644 index 0000000..81c087f --- /dev/null +++ b/examples/scala-xray/src/Main.scala @@ -0,0 +1,6 @@ +package cbt_examples.sxr +object Main{ + def main( args: Array[String] ): Unit = { + println( Console.GREEN ++ "Hello World" ++ Console.RESET ) + } +} diff --git a/internal/plugins/library/Library.scala b/internal/plugins/library/Library.scala index a9dec7c..8fea11a 100644 --- a/internal/plugins/library/Library.scala +++ b/internal/plugins/library/Library.scala @@ -3,7 +3,7 @@ import cbt._ import java.io._ import scala.concurrent._ import scala.concurrent.duration._ -trait Library extends Scalariform with GoogleJavaFormat with DynamicOverrides with AdvancedScala{ +trait Library extends Scalariform with GoogleJavaFormat with DynamicOverrides with AdvancedScala with ScalaXRay{ def inceptionYear: Int def description: String def version = ??? diff --git a/internal/plugins/shared/Shared.scala b/internal/plugins/shared/Shared.scala index 2db9770..c197997 100644 --- a/internal/plugins/shared/Shared.scala +++ b/internal/plugins/shared/Shared.scala @@ -1,7 +1,7 @@ package cbt_internal import cbt._ import java.net.URL -trait Shared extends AdvancedScala with SonatypeRelease with SnapshotVersion with GithubPom{ +trait Shared extends AdvancedScala with SonatypeRelease with SnapshotVersion with GithubPom with ScalaXRay{ override def user = "cvogt" override def groupId = "org.cvogt" override def organization = Some( Organization( "Jan Christopher Vogt", Some( new URL("http://cvogt.org") ) ) ) diff --git a/libraries/file/file.scala b/libraries/file/file.scala index d420964..7482c9b 100644 --- a/libraries/file/file.scala +++ b/libraries/file/file.scala @@ -69,8 +69,9 @@ trait Module { val map = files.sorted.flatMap { base => val b = base.getCanonicalFile.string if ( base.isDirectory ) { - base.listRecursive.map { f => - f -> f.getCanonicalFile.string.stripPrefix( b ).stripPrefix( File.separator ) + base.listRecursive.collect { + case f if !f.isDirectory => + f -> f.getCanonicalFile.string.stripPrefix( b ).stripPrefix( File.separator ) } } else { Seq( base -> base.getName ) diff --git a/ports/scala-xray/build/build.scala b/ports/scala-xray/build/build.scala new file mode 100644 index 0000000..7c8cdfc --- /dev/null +++ b/ports/scala-xray/build/build.scala @@ -0,0 +1,54 @@ +package cbt_ports.sxr +import cbt._ +import java.net._ +import java.io._ +class Build(val context: Context) extends PackageJars with AdvancedScala{ outer => + override def defaultScalaVersion = "2.11.8" + def groupId = "org.scala-sbt" + + private def gitHash = + if( scalaVersion.startsWith("2.12") ) "cb66c7aaad618dc072d75f5899d9fdf3e8fde8d8" + else if( scalaVersion.startsWith("2.11") ) "cb66c7aaad618dc072d75f5899d9fdf3e8fde8d8" + else if( scalaVersion.startsWith("2.10") ) "1239fa39b5ee8c171af3f9df201497561d749826" + else throw new Exception( "Unsupported scalaVersion: " + scalaVersion ) + + private def gitUrl = + if( scalaVersion.startsWith("2.12") ) "https://github.com/SethTisue/browse.git" + else if( scalaVersion.startsWith("2.11") ) "https://github.com/SethTisue/browse.git" + else if( scalaVersion.startsWith("2.10") ) "https://github.com/sbt/browse.git" + else throw new Exception( "Unsupported scalaVersion: " + scalaVersion ) + + def version = "rev-"+gitHash + + override def dependencies = Seq( libraries.scala.compiler ) + val github = GitDependency.checkout( gitUrl, gitHash ) + override def sources = Seq( github / "src" / "main" / "scala" ) + + override def resourceClasspath = { + val jquery_version = "1.3.2" + val jquery_scrollto_version = "1.4.2" + val jquery_qtip_version = "2.1.1" + + val resourcesManaged = github / "target" / "resources_managed" + lib.write( + resourcesManaged / "jquery-all.js", + Seq( + "https://code.jquery.com/jquery-" ~ jquery_version ~ ".min.js", + "http://cdn.jsdelivr.net/jquery.scrollto/" ~ jquery_scrollto_version ~ "/jquery.scrollTo.min.js", + "http://qtip2.com/v/" ~ jquery_qtip_version ~ "/jquery.qtip.min.js" + ).map{ s => + val url = new URL( s ) + val file = resourcesManaged / new File( url.getPath ).getName + lib.download( url, file, None ) + file.readAsString + }.mkString("\n") + ) + + ClassPath( + Seq( + github / "src" / "main" / "resources", + resourcesManaged + ) + ) + } +} diff --git a/stage2/plugins/ScalaXRay.scala b/stage2/plugins/ScalaXRay.scala new file mode 100644 index 0000000..9654c59 --- /dev/null +++ b/stage2/plugins/ScalaXRay.scala @@ -0,0 +1,17 @@ +package cbt +import java.io.File +trait ScalaXRay extends BaseBuild{ + override def scalacOptions = { + super.scalacOptions ++ ScalaXRay.scalacOptions( + ports.scalaXRay.dependency.asInstanceOf[PackageJars] + ) + } +} +object ScalaXRay{ + def scalacOptions( plugin: PackageJars, linkFile: Option[File] = None ) = + Seq( + "-Xplugin:" ~ plugin.jar.get.string, + "-Xplugin-require:sxr" + //"-P:sxr:base-directory:" ~ baseDirectory.string + ) ++ linkFile.map( "-P:sxr:link-file:" ~ _.string ) +} diff --git a/stage2/ports.scala b/stage2/ports.scala index 460a255..6aef98e 100644 --- a/stage2/ports.scala +++ b/stage2/ports.scala @@ -9,4 +9,5 @@ class ports( context: Context, scalaVersion: String ) { ) def mima = dep( "migration-manager" ) def scalariform = dep( "scalariform" ) + def scalaXRay = dep( "scala-xray" ) } -- cgit v1.2.3