Skip to content

Commit 12bcad7

Browse files
authored
Merge pull request scala-steward-org#3514 from scala-steward-org/topic/replace-deriveUnwrappedCodec
Replace `deriveUnwrappedCodec` with handwritten de-/encoders
2 parents b55e181 + 69e87eb commit 12bcad7

File tree

6 files changed

+37
-25
lines changed

6 files changed

+37
-25
lines changed

modules/core/src/main/scala/org/scalasteward/core/buildtool/sbt/data/SbtVersion.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,16 @@ package org.scalasteward.core.buildtool.sbt.data
1818

1919
import cats.Order
2020
import cats.syntax.all._
21-
import io.circe.Codec
22-
import io.circe.generic.extras.semiauto._
21+
import io.circe.{Decoder, Encoder}
2322

2423
final case class SbtVersion(value: String)
2524

2625
object SbtVersion {
27-
implicit val sbtVersionCodec: Codec[SbtVersion] =
28-
deriveUnwrappedCodec
26+
implicit val sbtVersionDecoder: Decoder[SbtVersion] =
27+
Decoder[String].map(SbtVersion.apply)
28+
29+
implicit val sbtVersionEncoder: Encoder[SbtVersion] =
30+
Encoder[String].contramap(_.value)
2931

3032
implicit val sbtVersionOrder: Order[SbtVersion] =
3133
Order[String].contramap(_.value)

modules/core/src/main/scala/org/scalasteward/core/buildtool/sbt/data/ScalaVersion.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,16 @@ package org.scalasteward.core.buildtool.sbt.data
1818

1919
import cats.Order
2020
import cats.syntax.all._
21-
import io.circe.Codec
22-
import io.circe.generic.extras.semiauto._
21+
import io.circe.{Decoder, Encoder}
2322

2423
final case class ScalaVersion(value: String)
2524

2625
object ScalaVersion {
27-
implicit val scalaVersionCodec: Codec[ScalaVersion] =
28-
deriveUnwrappedCodec
26+
implicit val scalaVersionDecoder: Decoder[ScalaVersion] =
27+
Decoder[String].map(ScalaVersion.apply)
28+
29+
implicit val scalaVersionEncoder: Encoder[ScalaVersion] =
30+
Encoder[String].contramap(_.value)
2931

3032
implicit val scalaVersionOrder: Order[ScalaVersion] =
3133
Order[String].contramap(_.value)

modules/core/src/main/scala/org/scalasteward/core/data/CrossDependency.scala

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@ package org.scalasteward.core.data
1818

1919
import cats.Order
2020
import cats.syntax.all._
21-
import io.circe.Codec
22-
import io.circe.generic.extras.semiauto._
21+
import io.circe.{Decoder, Encoder}
2322
import org.scalasteward.core.util.Nel
2423

2524
/** A list of dependencies with the same groupId, (non-cross) artifactId, and version. */
@@ -44,9 +43,12 @@ object CrossDependency {
4443
.map(grouped => CrossDependency(grouped.sorted))
4544
.toList
4645

47-
implicit val crossDependencyCodec: Codec[CrossDependency] =
48-
deriveUnwrappedCodec
46+
implicit val crossDependencyDecoder: Decoder[CrossDependency] =
47+
Decoder[Nel[Dependency]].map(CrossDependency.apply)
48+
49+
implicit val crossDependencyEncoder: Encoder[CrossDependency] =
50+
Encoder[Nel[Dependency]].contramap(_.dependencies)
4951

5052
implicit val crossDependencyOrder: Order[CrossDependency] =
51-
Order.by((_: CrossDependency).dependencies)
53+
Order.by(_.dependencies)
5254
}

modules/core/src/main/scala/org/scalasteward/core/data/Version.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ package org.scalasteward.core.data
1919
import cats.Order
2020
import cats.implicits._
2121
import cats.parse.{Numbers, Parser, Rfc5234}
22-
import io.circe.Codec
23-
import io.circe.generic.extras.semiauto.deriveUnwrappedCodec
22+
import io.circe.{Decoder, Encoder}
2423
import org.scalasteward.core.data.Version.startsWithDate
2524

2625
final case class Version(value: String) {
@@ -128,8 +127,11 @@ object Version {
128127

129128
val tagNames: List[Version => String] = List("v" + _, _.value, "release-" + _)
130129

131-
implicit val versionCodec: Codec[Version] =
132-
deriveUnwrappedCodec
130+
implicit val versionDecoder: Decoder[Version] =
131+
Decoder[String].map(Version.apply)
132+
133+
implicit val versionEncoder: Encoder[Version] =
134+
Encoder[String].contramap(_.value)
133135

134136
implicit val versionOrder: Order[Version] =
135137
Order.from[Version] { (v1, v2) =>

modules/core/src/main/scala/org/scalasteward/core/forge/data/PullRequestNumber.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@
1616

1717
package org.scalasteward.core.forge.data
1818

19-
import io.circe.Codec
20-
import io.circe.generic.extras.semiauto.deriveUnwrappedCodec
19+
import io.circe.{Decoder, Encoder}
2120

2221
final case class PullRequestNumber(value: Int) {
2322
override def toString: String = value.toString
2423
}
2524

2625
object PullRequestNumber {
27-
implicit val pullRequestNumberCodec: Codec[PullRequestNumber] =
28-
deriveUnwrappedCodec
26+
implicit val pullRequestNumberDecoder: Decoder[PullRequestNumber] =
27+
Decoder[Int].map(PullRequestNumber.apply)
28+
29+
implicit val pullRequestNumberEncoder: Encoder[PullRequestNumber] =
30+
Encoder[Int].contramap(_.value)
2931
}

modules/core/src/main/scala/org/scalasteward/core/util/Timestamp.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@
1717
package org.scalasteward.core.util
1818

1919
import cats.Order
20-
import io.circe.Codec
21-
import io.circe.generic.extras.semiauto.deriveUnwrappedCodec
20+
import io.circe.{Decoder, Encoder}
2221
import java.time.{Instant, LocalDateTime, ZoneOffset}
2322
import java.util.concurrent.TimeUnit
2423
import scala.concurrent.duration.FiniteDuration
@@ -38,8 +37,11 @@ object Timestamp {
3837
def fromLocalDateTime(ldt: LocalDateTime): Timestamp =
3938
Timestamp(ldt.toInstant(ZoneOffset.UTC).toEpochMilli)
4039

41-
implicit val timestampCodec: Codec[Timestamp] =
42-
deriveUnwrappedCodec
40+
implicit val timestampDecoder: Decoder[Timestamp] =
41+
Decoder[Long].map(Timestamp.apply)
42+
43+
implicit val timestampEncoder: Encoder[Timestamp] =
44+
Encoder[Long].contramap(_.millis)
4345

4446
implicit val timestampOrder: Order[Timestamp] =
4547
Order.by(_.millis)

0 commit comments

Comments
 (0)