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

org.virtuslab.ideprobe.protocol.BuildResult.scala Maven / Gradle / Ivy

There is a newer version: 0.53.0
Show newest version
package org.virtuslab.ideprobe.protocol

import java.nio.file.Path

case class BuildMessage(file: Option[String], content: String)

case class BuildResult(results: Seq[BuildStepResult]) {
  def assertSuccess(): Unit = if (hasErrors || isAborted) throw new AssertionError(s"Build did not succeed: $this")

  def hasErrors: Boolean = errors.nonEmpty

  def isAborted: Boolean = merge(_.isAborted)(_ || _)

  def errors: Seq[BuildMessage] = merge(_.errors)(_ ++ _)

  def warnings: Seq[BuildMessage] = merge(_.warnings)(_ ++ _)

  def infos: Seq[BuildMessage] = merge(_.infos)(_ ++ _)

  def stats: Seq[BuildMessage] = merge(_.stats)(_ ++ _)

  private def merge[A](get: BuildStepResult => A)(merge: (A, A) => A): A = {
    results.map(get).reduce(merge)
  }
}

case class BuildStepResult(
    isAborted: Boolean,
    errors: Seq[BuildMessage],
    warnings: Seq[BuildMessage],
    infos: Seq[BuildMessage],
    stats: Seq[BuildMessage]
) {
  def hasErrors: Boolean = errors.nonEmpty
}

case class BuildParams(scope: BuildScope, rebuild: Boolean)

case class BuildScope(project: ProjectRef, modules: Seq[String], files: Seq[String])

object BuildScope {
  def project: BuildScope = {
    BuildScope(project = ProjectRef.Default, modules = Nil, files = Nil)
  }

  def project(project: ProjectRef): BuildScope = {
    BuildScope(project = project, modules = Nil, files = Nil)
  }

  def modules(project: ProjectRef, modules: String*): BuildScope = {
    BuildScope(project = project, modules = modules, files = Nil)
  }

  def files(project: ProjectRef, paths: Path*): BuildScope = {
    BuildScope(project = project, modules = Nil, files = paths.map(_.toString))
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy