diff options
Diffstat (limited to 'examples')
-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 | ||||
-rw-r--r-- | examples/scalafix-compiler-plugin-example/.scalafix.conf (renamed from examples/scalafix-example/.scalafix.conf) | 0 | ||||
-rw-r--r-- | examples/scalafix-compiler-plugin-example/Main.scala | 9 | ||||
-rw-r--r-- | examples/scalafix-compiler-plugin-example/build/build.scala | 3 | ||||
-rw-r--r-- | examples/scalafix-compiler-plugin-example/build/build/build.scala | 5 | ||||
-rw-r--r-- | examples/scalafix-example/build/build.scala | 27 |
9 files changed, 126 insertions, 1 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 diff --git a/examples/scalafix-example/.scalafix.conf b/examples/scalafix-compiler-plugin-example/.scalafix.conf index dbb79d7..dbb79d7 100644 --- a/examples/scalafix-example/.scalafix.conf +++ b/examples/scalafix-compiler-plugin-example/.scalafix.conf diff --git a/examples/scalafix-compiler-plugin-example/Main.scala b/examples/scalafix-compiler-plugin-example/Main.scala new file mode 100644 index 0000000..c82c77b --- /dev/null +++ b/examples/scalafix-compiler-plugin-example/Main.scala @@ -0,0 +1,9 @@ +object Main{ + lazy val x = 1 + 1 + + implicit def toString(i :Int) = i.toString + + def main( args: Array[String] ){ + println("Hello world!") + } +} diff --git a/examples/scalafix-compiler-plugin-example/build/build.scala b/examples/scalafix-compiler-plugin-example/build/build.scala new file mode 100644 index 0000000..9d85087 --- /dev/null +++ b/examples/scalafix-compiler-plugin-example/build/build.scala @@ -0,0 +1,3 @@ +import cbt._ + +class Build(val context: Context) extends BaseBuild with ScalafixCompilerPlugin diff --git a/examples/scalafix-compiler-plugin-example/build/build/build.scala b/examples/scalafix-compiler-plugin-example/build/build/build.scala new file mode 100644 index 0000000..5b6286b --- /dev/null +++ b/examples/scalafix-compiler-plugin-example/build/build/build.scala @@ -0,0 +1,5 @@ +import cbt._ + +class Build(val context: Context) extends BuildBuild { + override def dependencies = super.dependencies :+ plugins.scalafixCompilerPlugin +} diff --git a/examples/scalafix-example/build/build.scala b/examples/scalafix-example/build/build.scala index 776d1e0..eff4176 100644 --- a/examples/scalafix-example/build/build.scala +++ b/examples/scalafix-example/build/build.scala @@ -1,3 +1,28 @@ import cbt._ -class Build(val context: Context) extends BaseBuild with Scalafix +import scala.meta._ +import scalafix.rewrite._ +import scalafix.util._ +import scalafix.util.TreePatch._ +import scalafix.util.TokenPatch._ + +class Build(val context: Context) extends BaseBuild{ + override def compile = { + new BasicBuild(context) with Scalafix{ + override def scalafix = super.scalafix.copy( + patches = + Seq( + AddGlobalImport( + importer"scala.collection.immutable" + ) + ), + rewrites = Seq( + ProcedureSyntax, + ExplicitImplicit, + VolatileLazyVal + ) + ) + }.scalafix.apply + super.compile // <- as scalafix trigger compile already before re-writing, this will just return the cached compile result before rewriting + } +} |