diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-03-27 19:34:48 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-03-28 09:39:16 -0400 |
commit | 26021f5e462fb9a5633a5f565235a2829fb6132b (patch) | |
tree | 6d75c89f145fc6319ff88316bdcbf97ed6ca4beb /examples/cross-rewrite-example | |
parent | cf0c79a78924ca15b81494da05af7e0b48fe2c7e (diff) | |
download | cbt-26021f5e462fb9a5633a5f565235a2829fb6132b.tar.gz cbt-26021f5e462fb9a5633a5f565235a2829fb6132b.tar.bz2 cbt-26021f5e462fb9a5633a5f565235a2829fb6132b.zip |
add example showing how to use scalafix to produce cross builds
Diffstat (limited to 'examples/cross-rewrite-example')
-rw-r--r-- | examples/cross-rewrite-example/Readme.md | 5 | ||||
-rw-r--r-- | examples/cross-rewrite-example/build/build.scala | 72 | ||||
-rw-r--r-- | examples/cross-rewrite-example/build/build/build.scala | 5 | ||||
-rw-r--r-- | examples/cross-rewrite-example/src/Main.scala | 1 |
4 files changed, 83 insertions, 0 deletions
diff --git a/examples/cross-rewrite-example/Readme.md b/examples/cross-rewrite-example/Readme.md new file mode 100644 index 0000000..7d96da0 --- /dev/null +++ b/examples/cross-rewrite-example/Readme.md @@ -0,0 +1,5 @@ +This is an example of how to use scalafix rewrite rules to produce multiple +variants of the same code base for different scala versions, e.g. 2.11.8 and +2.12.1 and against different comparable libraries, e.g. cats and scalaz. + +To package the jars for all combinations run `cbt cross.package`. diff --git a/examples/cross-rewrite-example/build/build.scala b/examples/cross-rewrite-example/build/build.scala new file mode 100644 index 0000000..6d2ffac --- /dev/null +++ b/examples/cross-rewrite-example/build/build.scala @@ -0,0 +1,72 @@ +package cbt_examples_build.cross_rewrite +import cbt._ +import java.io.File +import scala.meta._ +import scalafix.util._ +import scalafix.util.TreePatch._ +import scalafix.util.TokenPatch._ + +class Build(val context: Context) extends BaseBuild{ outer => + override def defaultScalaVersion = "2.11.8" + + def versions = Seq[(String, Seq[Patch])]( + scalaVersion -> Seq(), + "2.12.1" -> Seq( + RemoveGlobalImport( + importer"scala.concurrent.Future" + ), + AddGlobalImport( + importer"scala.util.Try" + ) + ) + ) + def libs = Seq[(String, MavenDependency, Seq[Patch])]( + ( + "scalaz", + ScalaDependency( "org.scalaz", "scalaz-core", "7.2.2" ), + Seq( + ) + ), + ( + "cats", + ScalaDependency( "org.typelevel", "cats", "0.9.0" ), + Seq( + ) + ) + ) + + def cross = versions.flatMap{ case ( v, version_rewrites ) => + libs.map{ + case ( label, dep, lib_rewrites ) => + val d = outer.target / "rewrites" / label ++ "-" ++ v + d.mkdirs + new Build(context) with Scalafix with PackageJars{ + override def groupId = "org.cvogt" + override def artifactId = "cbt-examples-cross-rewrite-" + label + override def version = "0.1" + override def defaultScalaVersion = v + override def dependencies = super.dependencies ++ Resolver( mavenCentral ).bind( dep ) + override def projectDirectory = d + override def scaladoc = None + override def sources = { + val fromTo = lib.autoRelative( outer.sources ).collect{ + case (location, relative) if location.isFile + => location -> projectDirectory / "src" / relative + } + + val to = fromTo.map(_._2) + assert( ( to diff to.distinct ).isEmpty ) + + Scalafix.apply(lib).config( + outer.classpath, + files = fromTo, + patches = lib_rewrites ++ version_rewrites, + allowEmpty = true + ).apply + + to + } + } + } + } +} diff --git a/examples/cross-rewrite-example/build/build/build.scala b/examples/cross-rewrite-example/build/build/build.scala new file mode 100644 index 0000000..404356f --- /dev/null +++ b/examples/cross-rewrite-example/build/build/build.scala @@ -0,0 +1,5 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild { + override def dependencies = super.dependencies :+ plugins.scalafix +} diff --git a/examples/cross-rewrite-example/src/Main.scala b/examples/cross-rewrite-example/src/Main.scala new file mode 100644 index 0000000..27ea3ff --- /dev/null +++ b/examples/cross-rewrite-example/src/Main.scala @@ -0,0 +1 @@ +import scala.concurrent.Future |