Skip to content

Commit

Permalink
Merge e3195ee into dbc30f9
Browse files Browse the repository at this point in the history
  • Loading branch information
d10xa committed Aug 4, 2018
2 parents dbc30f9 + e3195ee commit d814149
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 18 deletions.
1 change: 1 addition & 0 deletions src/main/resources/jadd-shortcuts.csv
Expand Up @@ -75,6 +75,7 @@ scalacheck,org.scalacheck:scalacheck%%
scalameta,org.scalameta:scalameta%%
scalamock-scalatest-support,org.scalamock:scalamock-scalatest-support%%
scalatest,org.scalatest:scalatest%%
scallop,org.rogach:scallop%%
scopt,com.github.scopt:scopt%%
selenium-api,org.seleniumhq.selenium:selenium-api
selenium-chrome-driver,org.seleniumhq.selenium:selenium-chrome-driver
Expand Down
5 changes: 5 additions & 0 deletions src/main/scala/ru/d10xa/jadd/Artifact.scala
Expand Up @@ -55,6 +55,11 @@ final case class Artifact(
def inlineScalaVersion: Artifact = Artifact.inlineScalaVersion(this)

def versionsForPrint: String = availableVersions.mkString(", ")

def canonicalView: String = maybeVersion match {
case Some(v) => s"$groupId:$artifactId:$v"
case None => s"$groupId:$artifactId"
}
}

object Artifact extends StrictLogging {
Expand Down
41 changes: 41 additions & 0 deletions src/main/scala/ru/d10xa/jadd/ArtifactProvider.scala
@@ -0,0 +1,41 @@
package ru.d10xa.jadd

import ru.d10xa.jadd.regex.GradleVerbalExpressions.stringWithGroupIdArtifactId
import ru.d10xa.jadd.regex.GradleVerbalExpressions.stringWithGroupIdArtifactIdVersion
import ru.d10xa.jadd.regex.GradleVerbalExpressions.variableAssignment
import ru.d10xa.jadd.stringinterpolation.GStr

trait ArtifactProvider[T] {
def provide(t: T): Seq[Artifact]
}

object ArtifactProvider {
case class GradleBuildDescription(buildFileSource: String)

implicit val gradleArtifactProvider: ArtifactProvider[GradleBuildDescription] =
(d: GradleBuildDescription) => {

import ru.d10xa.jadd.regex.RegexImplicits._
val map: Map[String, String] = variableAssignment.build().groups2(d.buildFileSource).toMap
val interpolated = GStr.interpolate(map)

val t3 = stringWithGroupIdArtifactIdVersion()
.groups3(d.buildFileSource)
.map { case (g, a, v) => s"$g:$a:$v" }
val t2 = stringWithGroupIdArtifactId()
.groups2(d.buildFileSource)
.map { case (g, a) => s"$g:$a" }

val all = t3 ++ t2

all
.map(new GStr(_).resolve(interpolated))
.map(Artifact.fromString)
.map(_.right.get) // TODO .get
}

implicit class BuildDescriptionImplicits[T](val buildDescription: T)(implicit artifactProvider: ArtifactProvider[T]) {
def artifacts: Seq[Artifact] = artifactProvider.provide(buildDescription)
}

}
24 changes: 6 additions & 18 deletions src/main/scala/ru/d10xa/jadd/show/GradleShowCommand.scala
@@ -1,24 +1,12 @@
package ru.d10xa.jadd.show

import com.typesafe.scalalogging.StrictLogging
import ru.d10xa.jadd.regex.GradleVerbalExpressions._
import ru.d10xa.jadd.stringinterpolation.GStr
import ru.d10xa.jadd.ArtifactProvider.GradleBuildDescription

class GradleShowCommand(buildFileSource: String) extends StrictLogging {
def show(): String = {
import ru.d10xa.jadd.regex.RegexImplicits._

val t3 = stringWithGroupIdArtifactIdVersion()
.groups3(buildFileSource)
.map { case (g, a, v) => s"$g:$a:$v" }
val t2 = stringWithGroupIdArtifactId()
.groups2(buildFileSource)
.map { case (g, a) => s"$g:$a" }

val map: Map[String, String] = variableAssignment.build().groups2(buildFileSource).toMap
val interpolated = GStr.interpolate(map)

val all = t3 ++ t2
all.map(new GStr(_)).map(_.resolve(interpolated)).mkString("\n")
}
def show(): String =
GradleBuildDescription(buildFileSource)
.artifacts
.map(_.canonicalView)
.mkString("\n")
}
42 changes: 42 additions & 0 deletions src/test/scala/ru/d10xa/jadd/GradleArtifactProviderTest.scala
@@ -0,0 +1,42 @@
package ru.d10xa.jadd

import org.scalatest.FunSuite
import org.scalatest.Matchers
import ru.d10xa.jadd.ArtifactProvider.GradleBuildDescription

class GradleArtifactProviderTest extends FunSuite with Matchers {

test("GradleBuildDescription as artifacts") {
val d = GradleBuildDescription(
"""
|plugins {
| id 'scala'
|}
|ext {
| scalaTestVersion = '3.0.4'
|}
|repositories {
| jcenter()
|}
|def scalaMajorVersion = "2.12"
|def scalaVersion = "${scalaMajorVersion}.6"
|dependencies {
| compile "org.scala-lang:scala-library:${scalaVersion}"
| testCompile "org.scalatest:scalatest_${scalaMajorVersion}:$scalaTestVersion"
|}
""".stripMargin
)
val artifacts = ArtifactProvider.gradleArtifactProvider.provide(d)

artifacts(0) shouldEqual Artifact(
groupId = "org.scala-lang",
artifactId = "scala-library",
maybeVersion = Some("2.12.6")
)
artifacts(1) shouldEqual Artifact(
groupId = "org.scalatest",
artifactId = "scalatest_2.12",
maybeVersion = Some("3.0.4")
)
}
}

0 comments on commit d814149

Please sign in to comment.