aboutsummaryrefslogblamecommitdiff
path: root/stage2/SbtDependencyDsl.scala
blob: 4fd425001c34b6cb145d7bfc8aecfe3f43217445 (plain) (tree)










































                                                                                                                        
package cbt
trait SbtDependencyDsl{ self: Build =>
  /** SBT-like dependency builder DSL for syntax compatibility */
  class DependencyBuilder2( groupId: String, artifactId: String, scalaVersion: Option[String] ){
    def %(version: String) = scalaVersion.map(
      v => ScalaDependency(groupId, artifactId, version, scalaVersion = v)
    ).getOrElse(
      MavenDependency(groupId, artifactId, version)
    )
  }
  implicit class DependencyBuilder(groupId: String){
    def %%(artifactId: String) = new DependencyBuilder2( groupId, artifactId, Some(scalaMajorVersion) )
    def  %(artifactId: String) = new DependencyBuilder2( groupId, artifactId, None )
  }
  implicit class DependencyBuilder3(d: MavenDependency){
    def  %(classifier: String) = d.copy(classifier = Classifier(Some(classifier)))
  }

  /*
  /** SBT-like dependency builder DSL for syntax compatibility */
  implicit class DependencyBuilder0(repository: Maven){
    def %(groupId: String) = new DependencyBuilder1b(repository, groupId)
  }
  implicit class DependencyBuilder1a(groupId: String){
    def %%(artifactId: String) = new DependencyBuilder2( Maven.central, groupId, artifactId, Some(scalaMajorVersion) )
    def  %(artifactId: String) = new DependencyBuilder2( Maven.central, groupId, artifactId, None )
  }
  class DependencyBuilder1b(repository: Maven, groupId: String){
    def %%(artifactId: String) = new DependencyBuilder2( repository, groupId, artifactId, Some(scalaMajorVersion) )
    def  %(artifactId: String) = new DependencyBuilder2( repository, groupId, artifactId, None )
  }
  class DependencyBuilder2( repository: Maven, groupId: String, artifactId: String, scalaMajorVersion: Option[String] ){
    def %(version: String) = scalaMajorVersion.map(
      v => repository(groupId, artifactId, version, scalaMajorVersion = v)
    ).getOrElse(
      repository.java(groupId, artifactId, version)
    )
  }
  implicit class DependencyBuilder3(d: MavenDependency){
    def  %(classifier: String) = d.copy(classifier = Classifier(Some(classifier)))
  }
  */
}