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

scala.cli.commands.new.New.scala Maven / Gradle / Ivy

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

import caseapp.core.RemainingArgs
import dependency.*

import scala.build.internal.{Constants, OsLibc, Runner}
import scala.build.options.{BuildOptions, JavaOptions}
import scala.build.{Artifacts, Logger, Positioned}
import scala.cli.commands.ScalaCommand
import scala.cli.commands.shared.{CoursierOptions, HelpCommandGroup}

object New extends ScalaCommand[NewOptions] {
  override def group: String = HelpCommandGroup.Main.toString

  override def scalaSpecificationLevel = SpecificationLevel.EXPERIMENTAL

  val giter8Dependency =
    Seq(dep"${Constants.giter8Organization}::${Constants.giter8Name}:${Constants.giter8Version}")

  override def runCommand(options: NewOptions, remainingArgs: RemainingArgs, logger: Logger): Unit =
    val scalaParameters = ScalaParameters(Constants.defaultScala213Version)
    val fetchedGiter8 = Artifacts.fetchAnyDependencies(
      giter8Dependency.map(Positioned.none),
      Seq.empty,
      Some(scalaParameters),
      logger,
      CoursierOptions().coursierCache(logger.coursierLogger("")),
      None
    ) match {
      case Right(value) => value
      case Left(value) =>
        System.err.println(value.message)
        sys.exit(1)
    }

    val giter8 = fetchedGiter8.fullDetailedArtifacts.collect {
      case (_, _, _, Some(f)) => os.Path(f, os.pwd)
    }

    val buildOptions = BuildOptions(
      javaOptions = JavaOptions(
        jvmIdOpt = Some(OsLibc.baseDefaultJvm(OsLibc.jvmIndexOs, "17")).map(Positioned.none)
      )
    )

    val exitCode =
      Runner.runJvm(
        buildOptions.javaHome().value.javaCommand,
        buildOptions.javaOptions.javaOpts.toSeq.map(_.value.value),
        giter8,
        "giter8.Giter8",
        remainingArgs.remaining,
        logger,
        allowExecve = true
      ).waitFor()

    sys.exit(exitCode)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy