aboutsummaryrefslogtreecommitdiff
path: root/examples/cross-rewrite-example/build/build.scala
blob: 6d2ffac52f5f92ce98e1e1f76764cc14c022c361 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
          }
        }
    }
  }
}