aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-03-27 19:34:48 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2017-03-28 09:39:16 -0400
commit26021f5e462fb9a5633a5f565235a2829fb6132b (patch)
tree6d75c89f145fc6319ff88316bdcbf97ed6ca4beb /examples
parentcf0c79a78924ca15b81494da05af7e0b48fe2c7e (diff)
downloadcbt-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')
-rw-r--r--examples/cross-rewrite-example/Readme.md5
-rw-r--r--examples/cross-rewrite-example/build/build.scala72
-rw-r--r--examples/cross-rewrite-example/build/build/build.scala5
-rw-r--r--examples/cross-rewrite-example/src/Main.scala1
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