diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/scala/forge/package.scala | 32 | ||||
-rw-r--r-- | src/test/scala/forge/MetacircularTests.scala | 9 |
2 files changed, 36 insertions, 5 deletions
diff --git a/src/main/scala/forge/package.scala b/src/main/scala/forge/package.scala index 621f2345..00562a85 100644 --- a/src/main/scala/forge/package.scala +++ b/src/main/scala/forge/package.scala @@ -1,5 +1,6 @@ import play.api.libs.json._ import ammonite.ops.{Bytes, Path} +import coursier.Dependency import forge.util.Args package object forge { @@ -56,6 +57,35 @@ package object forge { implicit val crFormat: Format[ammonite.ops.CommandResult] = Json.format implicit val modFormat: Format[coursier.Module] = Json.format - implicit val depFormat: Format[coursier.Dependency] = Json.format + // https://github.com/playframework/play-json/issues/120 + // implicit val depFormat: Format[coursier.Dependency] = Json.format + implicit val depFormat: Format[coursier.Dependency] = new Format[coursier.Dependency] { + def writes(o: Dependency) = { + Json.obj( + "module" -> Json.toJson(o.module), + "version" -> Json.toJson(o.version), + "configuration" -> Json.toJson(o.configuration), + "exclusions" -> Json.toJson(o.exclusions), + "attributes" -> Json.toJson(o.attributes), + "optional" -> Json.toJson(o.optional), + "transitive" -> Json.toJson(o.transitive) + ) + } + + def reads(json: JsValue) = json match{ + case x: JsObject => + JsSuccess(coursier.Dependency( + Json.fromJson[coursier.Module](x.value("module")).get, + Json.fromJson[String](x.value("version")).get, + Json.fromJson[String](x.value("configuration")).get, + Json.fromJson[coursier.Attributes](x.value("attributes")).get, + Json.fromJson[Set[(String, String)]](x.value("exclusions")).get, + Json.fromJson[Boolean](x.value("optional")).get, + Json.fromJson[Boolean](x.value("transitive")).get + )) + + case _ => JsError("Dep must be an object") + } + } implicit val attrFormat: Format[coursier.Attributes] = Json.format } diff --git a/src/test/scala/forge/MetacircularTests.scala b/src/test/scala/forge/MetacircularTests.scala index 4f6211da..80d6a0d8 100644 --- a/src/test/scala/forge/MetacircularTests.scala +++ b/src/test/scala/forge/MetacircularTests.scala @@ -9,10 +9,9 @@ object MetacircularTests extends TestSuite{ object Self extends scalaplugin.Subproject { val scalaVersion = T{ "2.12.4" } override val compileDeps = T{ -// for(scalaVersion <- scalaVersion) yield Seq( -// Dep(Mod("org.scala-lang", "scala-reflect"), scalaVersion, configuration = "provided"), -// ) - Seq(Dep(Mod("org.scala-lang", "scala-reflect"), "2.12.4")) + for(scalaVersion <- scalaVersion) yield Seq( + Dep(Mod("org.scala-lang", "scala-reflect"), scalaVersion, configuration = "provided"), + ) } override val deps = T{ @@ -37,6 +36,8 @@ object MetacircularTests extends TestSuite{ val evaluated1 = evaluator.evaluate(OSet(Self.scalaVersion)).evaluated.collect(mapping) val evaluated2 = evaluator.evaluate(OSet(Self.scalaBinaryVersion)).evaluated.collect(mapping) val evaluated3 = evaluator.evaluate(OSet(Self.compileDeps)).evaluated.collect(mapping) + val evaluated4 = evaluator.evaluate(OSet(Self.deps)).evaluated.collect(mapping) +// val evaluated5 = evaluator.evaluate(OSet(Self.compiled)).evaluated.collect(mapping) evaluated3 } } |