Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add platform option #1347

Merged
merged 1 commit into from
Sep 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ final case class SharedOptions(
@Name("resourceDir")
resourceDirs: List[String] = Nil,

@HelpMessage("Specify platform")
@ValueDescription("scala-js|scala-native|jvm")
platform: Option[String] = None,

@Group("Scala")
@Hidden
scalaLibrary: Option[Boolean] = None,
Expand Down
5 changes: 3 additions & 2 deletions modules/cli/src/main/scala/scala/cli/commands/Bsp.scala
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ object Bsp extends ScalaCommand[BspOptions] {
val sharedOptions = getSharedOptions()
BspReloadableOptions(
buildOptions = buildOptions(sharedOptions),
bloopRifleConfig = sharedOptions.bloopRifleConfig(),
bloopRifleConfig = sharedOptions.bloopRifleConfig().orExit(sharedOptions.logger),
logger = sharedOptions.logging.logger,
verbosity = sharedOptions.logging.verbosity
)
Expand Down Expand Up @@ -96,7 +96,8 @@ object Bsp extends ScalaCommand[BspOptions] {
}

private def buildOptions(sharedOptions: SharedOptions): BuildOptions = {
val baseOptions = sharedOptions.buildOptions()
val logger = sharedOptions.logger
val baseOptions = sharedOptions.buildOptions().orExit(logger)
baseOptions.copy(
classPathOptions = baseOptions.classPathOptions.copy(
fetchSources = baseOptions.classPathOptions.fetchSources.orElse(Some(true))
Expand Down
6 changes: 3 additions & 3 deletions modules/cli/src/main/scala/scala/cli/commands/Compile.scala
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ object Compile extends ScalaCommand[CompileOptions] {

def run(options: CompileOptions, args: RemainingArgs): Unit = {
maybePrintGroupHelp(options)
maybePrintSimpleScalacOutput(options, options.shared.buildOptions())
val logger = options.shared.logger
maybePrintSimpleScalacOutput(options, options.shared.buildOptions().orExit(logger))
CurrentParams.verbosity = options.shared.logging.verbosity
val inputs = options.shared.inputs(args.all).orExit(logger)
CurrentParams.workspaceOpt = Some(inputs.workspace)
Expand Down Expand Up @@ -76,10 +76,10 @@ object Compile extends ScalaCommand[CompileOptions] {
}
}

val buildOptions = options.shared.buildOptions()
val buildOptions = options.shared.buildOptions().orExit(logger)
val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
val configDb = ConfigDb.open(options.shared.directories.directories)
.orExit(logger)
val actionableDiagnostics =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ object DependencyUpdate extends ScalaCommand[DependencyUpdateOptions] {

val logger = options.shared.logger
val inputs = options.shared.inputs(args.all).orExit(logger)
val buildOptions = options.shared.buildOptions()
val buildOptions = options.shared.buildOptions().orExit(logger)

val (crossSources, _) =
CrossSources.forInputs(
Expand Down
7 changes: 4 additions & 3 deletions modules/cli/src/main/scala/scala/cli/commands/Doc.scala
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,11 @@ object Doc extends ScalaCommand[DocOptions] {
val inputs = options.shared.inputs(args.remaining).orExit(logger)
CurrentParams.workspaceOpt = Some(inputs.workspace)

val initialBuildOptions = options.shared.buildOptions(enableJmh = false, jmhVersion = None)
val threads = BuildThreads.create()
val initialBuildOptions =
options.shared.buildOptions(enableJmh = false, jmhVersion = None).orExit(logger)
val threads = BuildThreads.create()

val maker = options.shared.compilerMaker(threads)
val maker = options.shared.compilerMaker(threads).orExit(logger)
val compilerMaker = ScalaCompilerMaker.IgnoreScala2(maker)
val docCompilerMakerOpt = Some(SimpleScalaCompilerMaker("java", Nil, scaladoc = true))

Expand Down
2 changes: 1 addition & 1 deletion modules/cli/src/main/scala/scala/cli/commands/Export.scala
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ object Export extends ScalaCommand[ExportOptions] {
val inputs = options.shared.inputs(args.all).orExit(logger)
CurrentParams.workspaceOpt = Some(inputs.workspace)
val baseOptions =
options.shared.buildOptions()
options.shared.buildOptions().orExit(logger)
.copy(mainClass = options.mainClass.mainClass.filter(_.nonEmpty))

val (sourcesMain, optionsMain0) =
Expand Down
8 changes: 4 additions & 4 deletions modules/cli/src/main/scala/scala/cli/commands/Fmt.scala
Original file line number Diff line number Diff line change
Expand Up @@ -39,16 +39,16 @@ object Fmt extends ScalaCommand[FmtOptions] {
}
CurrentParams.workspaceOpt = Some(workspace)
val (versionMaybe, dialectMaybe, pathMaybe) = readVersionAndDialect(workspace, options, logger)
val cache = options.shared.buildOptions().archiveCache
val buildOptions = options.buildOptions
val cache = options.shared.buildOptions().orExit(logger).archiveCache
val buildOptions = options.buildOptions

if (sourceFiles.isEmpty)
logger.debug("No source files, not formatting anything")
else {
val version =
options.scalafmtVersion.getOrElse(versionMaybe.getOrElse(Constants.defaultScalafmtVersion))
val dialectString = options.scalafmtDialect.orElse(dialectMaybe).getOrElse {
options.buildOptions.scalaParams.orExit(logger).map(_.scalaVersion)
options.buildOptions.orExit(logger).scalaParams.orExit(logger).map(_.scalaVersion)
.getOrElse(Constants.defaultScalaVersion) match
case v if v.startsWith("2.11.") => "scala211"
case v if v.startsWith("2.12.") => "scala212"
Expand Down Expand Up @@ -87,7 +87,7 @@ object Fmt extends ScalaCommand[FmtOptions] {
params,
cache,
logger,
() => buildOptions.javaHome().value.javaCommand
() => buildOptions.orExit(logger).javaHome().value.javaCommand
)
.orExit(logger)
.command
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ object Metabrowse extends ScalaCommand[MetabrowseOptions] {
val inputs = options.shared.inputs(args.all).orExit(logger)
CurrentParams.workspaceOpt = Some(inputs.workspace)

val baseOptions = options.shared.buildOptions()
val baseOptions = options.shared.buildOptions().orExit(logger)
val initialBuildOptions = baseOptions.copy(
classPathOptions = baseOptions.classPathOptions.copy(
fetchSources = Some(true)
Expand All @@ -57,7 +57,7 @@ object Metabrowse extends ScalaCommand[MetabrowseOptions] {
)
val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
val configDb = ConfigDb.open(options.shared.directories.directories)
.orExit(logger)
val actionableDiagnostics =
Expand Down
12 changes: 6 additions & 6 deletions modules/cli/src/main/scala/scala/cli/commands/Package.scala
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,19 @@ object Package extends ScalaCommand[PackageOptions] with BuildCommandHelpers {
override def isRestricted = true
override def sharedOptions(options: PackageOptions): Option[SharedOptions] = Some(options.shared)
def run(options: PackageOptions, args: RemainingArgs): Unit = {
maybePrintGroupHelp(options)
maybePrintSimpleScalacOutput(options, options.baseBuildOptions)

CurrentParams.verbosity = options.shared.logging.verbosity
val logger = options.shared.logger
val inputs = options.shared.inputs(args.remaining).orExit(logger)
val logger = options.shared.logger
val baseBuildOptions = options.baseBuildOptions.orExit(logger)
val inputs = options.shared.inputs(args.remaining).orExit(logger)
maybePrintGroupHelp(options)
maybePrintSimpleScalacOutput(options, baseBuildOptions)
CurrentParams.workspaceOpt = Some(inputs.workspace)

// FIXME mainClass encoding has issues with special chars, such as '-'

val initialBuildOptions = buildOptions(options)
val threads = BuildThreads.create()
val compilerMaker = options.compilerMaker(threads)
val compilerMaker = options.compilerMaker(threads).orExit(logger)
val docCompilerMakerOpt = options.docCompilerMakerOpt

val cross = options.compileCross.cross.getOrElse(false)
Expand Down
5 changes: 3 additions & 2 deletions modules/cli/src/main/scala/scala/cli/commands/Repl.scala
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ object Repl extends ScalaCommand[ReplOptions] {
import ops.sharedRepl._
val ammoniteVersionOpt = ammoniteVersion.map(_.trim).filter(_.nonEmpty)

val logger = ops.shared.logger
val baseOptions = shared.copy(scalaVersion =
if (
ammonite.contains(true) &&
Expand All @@ -41,7 +42,7 @@ object Repl extends ScalaCommand[ReplOptions] {
Some("3.1.3")
}
else shared.scalaVersion
).buildOptions()
).buildOptions().orExit(logger)
baseOptions.copy(
javaOptions = baseOptions.javaOptions.copy(
javaOpts =
Expand Down Expand Up @@ -77,7 +78,7 @@ object Repl extends ScalaCommand[ReplOptions] {

val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)

val directories = options.shared.directories.directories

Expand Down
5 changes: 3 additions & 2 deletions modules/cli/src/main/scala/scala/cli/commands/Run.scala
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,11 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers {
def buildOptions(options: RunOptions): BuildOptions = {
import options.*
import options.sharedRun.*
val logger = options.shared.logger
val baseOptions = shared.buildOptions(
enableJmh = benchmarking.jmh.contains(true),
jmhVersion = benchmarking.jmhVersion
)
).orExit(logger)
baseOptions.copy(
mainClass = mainClass.mainClass,
javaOptions = baseOptions.javaOptions.copy(
Expand Down Expand Up @@ -115,7 +116,7 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers {
CurrentParams.workspaceOpt = Some(inputs.workspace)
val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)

def maybeRun(
build: Build.Successful,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,9 @@ abstract class ScalaCommand[T](implicit myParser: Parser[T], help: Help[T])
val candidates = arg.name.name match {
case "dependency" =>
state.flatMap(sharedOptions).toList.flatMap { sharedOptions =>
val cache = sharedOptions.coursierCache
val sv = sharedOptions.buildOptions()
val logger = sharedOptions.logger
val cache = sharedOptions.coursierCache
val sv = sharedOptions.buildOptions().orExit(logger)
.scalaParams
.toOption
.flatten
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ object SetupIde extends ScalaCommand[SetupIdeOptions] {
}

private def buildOptions(opts: SetupIdeOptions): BuildOptions =
opts.shared.buildOptions()
opts.shared.buildOptions().orExit(opts.shared.logger)

private def writeBspConfiguration(
options: SetupIdeOptions,
Expand Down
4 changes: 2 additions & 2 deletions modules/cli/src/main/scala/scala/cli/commands/Test.scala
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ object Test extends ScalaCommand[TestOptions] {

def buildOptions(opts: TestOptions): BuildOptions = {
import opts._
val baseOptions = shared.buildOptions()
val baseOptions = shared.buildOptions().orExit(opts.shared.logger)
baseOptions.copy(
javaOptions = baseOptions.javaOptions.copy(
javaOpts =
Expand Down Expand Up @@ -63,7 +63,7 @@ object Test extends ScalaCommand[TestOptions] {

val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)

val cross = options.compileCross.cross.getOrElse(false)
val configDb = ConfigDb.open(options.shared.directories.directories)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ object Bloop extends ScalaCommand[BloopOptions] {
jvm = opts.jvm,
coursier = opts.coursier
)
val options = sharedOptions.buildOptions(false, None)
val options = sharedOptions.buildOptions(false, None).orExit(opts.logging.logger)
lazy val defaultJvmCmd =
sharedOptions.downloadJvm(OsLibc.baseDefaultJvm(OsLibc.jvmIndexOs, "17"), options)
val javaCmd = opts.compilationServer.bloopJvm
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
mainClass: MainClassOptions,
ivy2LocalLike: Option[Boolean]
): Either[BuildException, BuildOptions] = either {
val baseOptions = shared.buildOptions()
val baseOptions = shared.buildOptions().orExit(shared.logger)
val contextualOptions = PublishContextualOptions(
repository = publishRepo.publishRepository.filter(_.trim.nonEmpty),
repositoryIsIvy2LocalLike = ivy2LocalLike,
Expand Down Expand Up @@ -189,8 +189,8 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers {
).orExit(logger)
val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val docCompilerMaker = options.shared.compilerMaker(threads, scaladoc = true)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
val docCompilerMaker = options.shared.compilerMaker(threads, scaladoc = true).orExit(logger)

val cross = options.compileCross.cross.getOrElse(false)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ object PublishLocal extends ScalaCommand[PublishLocalOptions] {
).orExit(logger)
val threads = BuildThreads.create()

val compilerMaker = options.shared.compilerMaker(threads)
val docCompilerMaker = options.shared.compilerMaker(threads, scaladoc = true)
val compilerMaker = options.shared.compilerMaker(threads).orExit(logger)
val docCompilerMaker = options.shared.compilerMaker(threads, scaladoc = true).orExit(logger)

val cross = options.compileCross.cross.getOrElse(false)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package scala.cli.commands.util
import coursier.core.Version

import scala.build.EitherCps.{either, value}
import scala.build.errors.BuildException
import scala.build.internal.FetchExternalBinary
import scala.build.options.BuildOptions
import scala.cli.commands.FmtOptions
Expand All @@ -26,7 +28,7 @@ object FmtOptionsUtil {
(url, !tag0.startsWith("v"))
}

def buildOptions: BuildOptions = shared.buildOptions()
def buildOptions: Either[BuildException, BuildOptions] = shared.buildOptions()

def scalafmtCliOptions: List[String] =
scalafmtArg :::
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ object PackageOptionsUtil {
.sequence
.left.map(CompositeBuildException(_))

def baseBuildOptions: BuildOptions = {
val baseOptions = shared.buildOptions()
def baseBuildOptions: Either[BuildException, BuildOptions] = either {
val baseOptions = value(shared.buildOptions())
baseOptions.copy(
mainClass = mainClass.mainClass.filter(_.nonEmpty),
notForBloopOptions = baseOptions.notForBloopOptions.copy(
Expand Down Expand Up @@ -110,7 +110,7 @@ object PackageOptionsUtil {
}

def finalBuildOptions: Either[BuildException, BuildOptions] = either {
val baseOptions = baseBuildOptions
val baseOptions = value(baseBuildOptions)
baseOptions.copy(
notForBloopOptions = baseOptions.notForBloopOptions.copy(
packageOptions = baseOptions.notForBloopOptions.packageOptions.copy(
Expand All @@ -120,8 +120,8 @@ object PackageOptionsUtil {
)
}

def compilerMaker(threads: BuildThreads): ScalaCompilerMaker = {
val maker = shared.compilerMaker(threads)
def compilerMaker(threads: BuildThreads): Either[BuildException, ScalaCompilerMaker] = either {
val maker = value(shared.compilerMaker(threads))
if (forcedPackageTypeOpt.contains(PackageType.DocJar))
ScalaCompilerMaker.IgnoreScala2(maker)
else
Expand Down
Loading