def fromString()

in magenta-lib/src/main/scala/magenta/input/RiffRaffYamlReader.scala [45:69]


  def fromString(
      yaml: String
  ): Validated[ConfigErrors, RiffRaffDeployConfig] = {
    yamlToJson(yaml) match {
      case Success(json) =>
        Json.fromJson[RiffRaffDeployConfig](json) match {
          case JsSuccess(config, _) => Valid(config)
          case JsError(errors :: tail) =>
            val nelErrors = NEL(errors, tail)
            Invalid(
              ConfigErrors(nelErrors.map { case (path, validationErrors) =>
                val pathName = if (path.path.isEmpty) "YAML" else path.toString
                ConfigError(
                  s"Parsing $pathName",
                  validationErrors.map(ve => ve.message).mkString(", ")
                )
              })
            )
          case JsError(_) => `wtf?`
        }
      case Failure(exception) =>
        val error = ConfigError("Converting YAML to JSON", exception.getMessage)
        Invalid(ConfigErrors(error))
    }
  }