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

scala.cli.commands.util.BuildCommandHelpers.scala Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package scala.cli.commands.util

import scala.build.errors.BuildException
import scala.build.{Build, Builds, Logger, Os}
import scala.cli.commands.ScalaCommand
import scala.cli.commands.shared.SharedOptions
import scala.cli.commands.util.ScalacOptionsUtil.*

trait BuildCommandHelpers { self: ScalaCommand[_] =>
  extension (successfulBuild: Build.Successful) {
    def retainedMainClass(
      logger: Logger,
      mainClasses: Seq[String] = successfulBuild.foundMainClasses()
    ): Either[BuildException, String] =
      successfulBuild.retainedMainClass(
        mainClasses,
        self.argvOpt.map(_.mkString(" ")).getOrElse(actualFullCommand),
        logger
      )

    /** -O -d defaults to --compile-output; if both are defined, --compile-output takes precedence
      */
    def copyOutput(sharedOptions: SharedOptions): Unit =
      sharedOptions.compilationOutput.filter(_.nonEmpty)
        .orElse(sharedOptions.scalacOptions.getScalacOption("-d"))
        .filter(_.nonEmpty)
        .map(os.Path(_, Os.pwd)).foreach { output =>
          os.copy(
            successfulBuild.output,
            output,
            createFolders = true,
            mergeFolders = true,
            replaceExisting = true
          )
        }
  }

  extension (builds: Builds) {
    def anyBuildCancelled: Boolean = builds.all.exists {
      case _: Build.Cancelled => true
      case _                  => false
    }

    def anyBuildFailed: Boolean = builds.all.exists {
      case _: Build.Failed => true
      case _               => false
    }
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy