All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mill.scalalib.JsonFormatters.scala Maven / Gradle / Ivy

The newest version!
package mill.scalalib

import upickle.default.{ReadWriter => RW}

trait JsonFormatters {
  implicit lazy val publicationFormat: RW[coursier.core.Publication] = upickle.default.macroRW
  implicit lazy val extensionFormat: RW[coursier.core.Extension] = upickle.default.macroRW

  implicit lazy val modFormat: RW[coursier.Module] = upickle.default.macroRW
  implicit lazy val versionConstraintFormat: RW[coursier.version.VersionConstraint] =
    implicitly[RW[String]].bimap(
      _.asString,
      coursier.version.VersionConstraint(_)
    )
  implicit lazy val versionIntervalFormat0: RW[coursier.version.VersionInterval] =
    upickle.default.macroRW
  implicit lazy val versionFormat0: RW[coursier.version.Version] =
    implicitly[RW[String]].bimap(
      _.asString,
      coursier.version.Version(_)
    )
  implicit lazy val variantSelectorFormat: RW[coursier.core.VariantSelector] =
    RW.merge(
      upickle.default.macroRW[coursier.core.VariantSelector.ConfigurationBased],
      upickle.default.macroRW[coursier.core.VariantSelector.AttributesBased]
    )
  private implicit lazy val variantAttributesFormat: RW[coursier.core.Variant.Attributes] =
    upickle.default.macroRW
  implicit lazy val variantFormat: RW[coursier.core.Variant] =
    RW.merge(
      upickle.default.macroRW[coursier.core.Variant.Configuration],
      variantAttributesFormat
    )
  implicit lazy val bomDepFormat: RW[coursier.core.BomDependency] = upickle.default.macroRW
  implicit lazy val overridesFormat: RW[coursier.core.Overrides] =
    implicitly[RW[coursier.core.DependencyManagement.Map]].bimap(
      _.flatten.toMap,
      coursier.core.Overrides(_)
    )
  implicit lazy val depFormat: RW[coursier.core.Dependency] = upickle.default.macroRW
  implicit lazy val minimizedExclusionsFormat: RW[coursier.core.MinimizedExclusions] =
    upickle.default.macroRW
  implicit lazy val exclusionDataFormat: RW[coursier.core.MinimizedExclusions.ExclusionData] =
    RW.merge(
      upickle.default.macroRW[coursier.core.MinimizedExclusions.ExcludeNone.type],
      upickle.default.macroRW[coursier.core.MinimizedExclusions.ExcludeAll.type],
      upickle.default.macroRW[coursier.core.MinimizedExclusions.ExcludeSpecific]
    )
  implicit lazy val attrFormat: RW[coursier.Attributes] = upickle.default.macroRW
  implicit lazy val orgFormat: RW[coursier.Organization] = upickle.default.macroRW
  implicit lazy val modNameFormat: RW[coursier.ModuleName] = upickle.default.macroRW
  implicit lazy val configurationFormat: RW[coursier.core.Configuration] = upickle.default.macroRW
  implicit lazy val typeFormat: RW[coursier.core.Type] = upickle.default.macroRW
  implicit lazy val classifierFormat: RW[coursier.core.Classifier] = upickle.default.macroRW
  implicit lazy val depMgmtKeyFormat: RW[coursier.core.DependencyManagement.Key] =
    upickle.default.macroRW
  implicit lazy val depMgmtValuesFormat: RW[coursier.core.DependencyManagement.Values] =
    upickle.default.macroRW
  implicit lazy val activationOsFormat: RW[coursier.core.Activation.Os] = upickle.default.macroRW
  implicit lazy val infoDeveloperFormat: RW[coursier.core.Info.Developer] = upickle.default.macroRW
  implicit lazy val infoScmFormat: RW[coursier.core.Info.Scm] = upickle.default.macroRW
  implicit lazy val infoLicenseFormat: RW[coursier.core.Info.License] = upickle.default.macroRW
  implicit lazy val infoFormat: RW[coursier.core.Info] = upickle.default.macroRW
  implicit lazy val snapshotVersionFormat: RW[coursier.core.SnapshotVersion] =
    upickle.default.macroRW
  implicit lazy val versionInternalFormat: RW[coursier.core.VersionInterval] =
    upickle.default.macroRW
  implicit lazy val versionFormat: RW[coursier.core.Version] =
    implicitly[RW[String]].bimap(
      _.repr,
      coursier.core.Version(_)
    )
  implicit lazy val snapshotVersioningFormat: RW[coursier.core.SnapshotVersioning] =
    upickle.default.macroRW
  implicit lazy val versionsFormat: RW[coursier.core.Versions] =
    upickle.default.readwriter[ujson.Value].bimap[coursier.core.Versions](
      versions =>
        ujson.Obj(
          "latest" -> versions.latest,
          "release" -> versions.release,
          "available" -> versions.available,
          "lastUpdated" -> upickle.default.writeJs(versions.lastUpdated)
        ),
      json =>
        coursier.core.Versions(
          latest = json("latest").str,
          release = json("release").str,
          available = upickle.default.read[List[String]](json("available")),
          lastUpdated =
            upickle.default.read[Option[coursier.core.Versions.DateTime]](json("lastUpdated"))
        )
    )
  implicit lazy val versionsDateTimeFormat: RW[coursier.core.Versions.DateTime] =
    upickle.default.macroRW
  implicit lazy val activationFormat: RW[coursier.core.Activation] = upickle.default.macroRW
  implicit lazy val profileFormat: RW[coursier.core.Profile] = upickle.default.macroRW
  private implicit lazy val variantPublicationFormat: RW[coursier.core.VariantPublication] =
    upickle.default.macroRW
  private implicit def attributesMapFormat[T: RW]: RW[Map[coursier.core.Variant.Attributes, T]] =
    implicitly[RW[Map[String, T]]].bimap(
      attrMap => attrMap.map { case (k, v) => k.variantName -> v },
      strMap => strMap.map { case (k, v) => coursier.core.Variant.Attributes(k) -> v }
    )
  implicit lazy val projectFormat: RW[coursier.core.Project] = upickle.default.macroRW

}
object JsonFormatters extends JsonFormatters




© 2015 - 2025 Weber Informatics LLC | Privacy Policy