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

scala.build.preprocessing.CustomDirectivesReporter.scala Maven / Gradle / Ivy

package scala.build.preprocessing

import com.virtuslab.using_directives.custom.utils.{Position => DirectivePosition}
import com.virtuslab.using_directives.reporter.Reporter

import scala.build.Position
import scala.build.errors.{Diagnostic, Severity}

class CustomDirectivesReporter(path: Either[String, os.Path], onDiagnostic: Diagnostic => Unit)
    extends Reporter {

  private var errorCount = 0

  private def toScalaCliPosition(position: DirectivePosition): Position = {
    val coords = (position.getLine, position.getColumn)
    Position.File(path, coords, coords)
  }

  override def error(msg: String): Unit =
    onDiagnostic {
      errorCount += 1
      Diagnostic(msg, Severity.Error)
    }
  override def error(position: DirectivePosition, msg: String): Unit =
    onDiagnostic {
      errorCount += 1
      Diagnostic(msg, Severity.Error, Seq(toScalaCliPosition(position)))
    }
  override def warning(msg: String): Unit =
    onDiagnostic {
      Diagnostic(msg, Severity.Warning)
    }
  override def warning(position: DirectivePosition, msg: String): Unit =
    onDiagnostic {
      Diagnostic(msg, Severity.Warning, Seq(toScalaCliPosition(position)))
    }

  override def hasErrors(): Boolean =
    errorCount != 0

  override def reset(): Unit = {
    errorCount = 0
  }
}

object CustomDirectivesReporter {
  def create(path: Either[String, os.Path])(onDiagnostic: Diagnostic => Unit)
    : CustomDirectivesReporter =
    new CustomDirectivesReporter(path, onDiagnostic)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy