diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Benchmarking.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Benchmarking.scala index 0031812b89..7e18d73aac 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Benchmarking.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Benchmarking.scala @@ -16,6 +16,8 @@ import scala.build.{Positioned, options} import scala.cli.commands.SpecificationLevel @DirectiveGroupName("Benchmarking options") +@DirectiveExamples(s"//> using jmh") +@DirectiveExamples(s"//> using jmh true") @DirectiveExamples(s"//> using jmhVersion ${Constants.jmhVersion}") @DirectiveUsage( "//> using jmh _value_ | using jmhVersion _value_", diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ComputeVersion.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ComputeVersion.scala index a7281455f1..033d0ab17b 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ComputeVersion.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ComputeVersion.scala @@ -22,11 +22,8 @@ import scala.cli.commands.SpecificationLevel @DirectiveUsage("//> using computeVersion git:tag", "`//> using computeVersion` _method_") @DirectiveDescription("Method used to compute the version for BuildInfo") @DirectiveLevel(SpecificationLevel.RESTRICTED) -// format: off -final case class ComputeVersion( - computeVersion: Option[Positioned[String]] = None -) extends HasBuildOptions { - // format: on +final case class ComputeVersion(computeVersion: Option[Positioned[String]] = None) + extends HasBuildOptions { def buildOptions: Either[BuildException, BuildOptions] = either { BuildOptions( diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/CustomJar.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/CustomJar.scala index 0e9ec5258a..ebee95c7ec 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/CustomJar.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/CustomJar.scala @@ -26,8 +26,16 @@ import scala.util.{Failure, Success, Try} @DirectiveUsage( "`//> using jar `_path_ | `//> using jars `_path1_ _path2_ …", """`//> using jar` _path_ - | |`//> using jars` _path1_ _path2_ … + | + |`//> using test.jar` _path_ + |`//> using test.jars` _path1_ _path2_ … + | + |`//> using source.jar` _path_ + |`//> using source.jars` _path1_ _path2_ … + | + |`//> using test.source.jar` _path_ + |`//> using test.source.jars` _path1_ _path2_ … |""".stripMargin ) @DirectiveDescription("Manually add JAR(s) to the class path") diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Dependency.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Dependency.scala index 81ca881214..94c84df10b 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Dependency.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Dependency.scala @@ -19,17 +19,35 @@ import scala.build.preprocessing.directives.DirectiveUtil.* import scala.cli.commands.SpecificationLevel @DirectiveExamples("//> using dep com.lihaoyi::os-lib:0.9.1") +@DirectiveExamples( + "//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar" +) @DirectiveExamples("//> using test.dep org.scalatest::scalatest:3.2.10") @DirectiveExamples("//> using test.dep org.scalameta::munit:0.7.29") @DirectiveExamples( "//> using compileOnly.dep com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:2.23.2" ) @DirectiveExamples( - "//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar" + "//> using scalafix.dep com.github.xuwei-k::scalafix-rules:0.5.1" ) @DirectiveUsage( "//> using dep org:name:ver | //> using deps org:name:ver org2:name2:ver2", - "`//> using dep` _org_`:`name`:`ver" + """`//> using dep` _org_`:`name`:`ver + |`//> using deps` _org_`:`name`:`ver _org_`:`name`:`ver + |`//> using dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + | + |`//> using test.dep` _org_`:`name`:`ver + |`//> using test.deps` _org_`:`name`:`ver _org_`:`name`:`ver + |`//> using test.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + | + |`//> using compileOnly.dep` _org_`:`name`:`ver + |`//> using compileOnly.deps` _org_`:`name`:`ver _org_`:`name`:`ver + |`//> using compileOnly.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + | + |`//> using scalafix.dep` _org_`:`name`:`ver + |`//> using scalafix.deps` _org_`:`name`:`ver _org_`:`name`:`ver + |`//> using scalafix.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + |""".stripMargin ) @DirectiveDescription("Add dependencies") @DirectiveLevel(SpecificationLevel.MUST) diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Exclude.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Exclude.scala index 1b86e779c0..164fd67926 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Exclude.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Exclude.scala @@ -22,11 +22,7 @@ import scala.util.Try ) @DirectiveDescription("Exclude sources from the project") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off -final case class Exclude( - exclude: List[Positioned[String]] = Nil -) extends HasBuildOptions { -// format: on +final case class Exclude(exclude: List[Positioned[String]] = Nil) extends HasBuildOptions { def buildOptions: Either[BuildException, BuildOptions] = either { BuildOptions( internal = InternalOptions( diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaHome.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaHome.scala index 6dc758b3da..05ef5e3a77 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaHome.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaHome.scala @@ -16,12 +16,10 @@ import scala.util.Try ) @DirectiveDescription("Sets Java home used to run your application or tests") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class JavaHome( javaHome: DirectiveValueParser.WithScopePath[Option[Positioned[String]]] = DirectiveValueParser.WithScopePath.empty(None) ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = either { javaHome.value match { case None => BuildOptions() diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaOptions.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaOptions.scala index 1b0a3f1714..1fc466cf1b 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaOptions.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaOptions.scala @@ -12,7 +12,12 @@ import scala.cli.commands.SpecificationLevel @DirectiveExamples("//> using test.javaOpt -Dsomething=a") @DirectiveUsage( "//> using javaOpt _options_", - "`//> using javaOpt` _options_" + """`//> using javaOpt` _options_ + |`//> using javaOptions` _options_` + | + |`//> using test.javaOpt` _options_ + |`//> using test.javaOptions` _options_` + |""".stripMargin ) @DirectiveDescription("Add Java options which will be passed when running an application.") @DirectiveLevel(SpecificationLevel.MUST) diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaProps.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaProps.scala index 331d7f2751..9cabe91362 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaProps.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavaProps.scala @@ -14,8 +14,10 @@ import scala.cli.commands.SpecificationLevel @DirectiveUsage( "//> using javaProp _key=val_", """`//> using javaProp` _key=value_ - | |`//> using javaProp` _key_ + | + |`//> using test.javaProp` _key=value_ + |`//> using test.javaProp` _key_ |""".stripMargin ) @DirectiveDescription("Add Java properties") diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavacOptions.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavacOptions.scala index e04fd74ff7..f5bf971ab4 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavacOptions.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/JavacOptions.scala @@ -12,7 +12,12 @@ import scala.cli.commands.SpecificationLevel @DirectiveExamples("//> using test.javacOpt -source 1.8 -target 1.8") @DirectiveUsage( "//> using javacOpt _options_", - "`//> using javacOpt` _options_" + """`//> using javacOpt` _options_ + |`//> using javacOptions` _options_ + | + |`//> using test.javacOpt` _options_ + |`//> using test.javacOptions` _options_ + |""".stripMargin ) @DirectiveDescription("Add Javac options which will be passed when compiling sources.") @DirectiveLevel(SpecificationLevel.SHOULD) diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Jvm.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Jvm.scala index 7f6fc5c33b..efc96e025f 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Jvm.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Jvm.scala @@ -19,11 +19,7 @@ import scala.cli.commands.SpecificationLevel "scala-cli uses [coursier](https://get-coursier.io/) to fetch JVMs, so you can use `cs java --available` to list the available JVMs." ) @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off -final case class Jvm( - jvm: Option[Positioned[String]] = None -) extends HasBuildOptions { - // format: on +final case class Jvm(jvm: Option[Positioned[String]] = None) extends HasBuildOptions { def buildOptions: Either[BuildException, BuildOptions] = { val buildOpt = BuildOptions( javaOptions = options.JavaOptions( diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/MainClass.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/MainClass.scala index 32b673f3b0..da97f7eab1 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/MainClass.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/MainClass.scala @@ -14,17 +14,9 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription("Specify default main class") @DirectiveLevel(SpecificationLevel.MUST) -// format: off -final case class MainClass( - mainClass: Option[String] = None -) extends HasBuildOptions { - // format: on - def buildOptions: Either[BuildException, BuildOptions] = { - val buildOpt = BuildOptions( - mainClass = mainClass - ) - Right(buildOpt) - } +final case class MainClass(mainClass: Option[String] = None) extends HasBuildOptions { + def buildOptions: Either[BuildException, BuildOptions] = + Right(BuildOptions(mainClass = mainClass)) } object MainClass { diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Packaging.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Packaging.scala index dca479380f..c0d0779ad3 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Packaging.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Packaging.scala @@ -21,8 +21,13 @@ import scala.cli.commands.SpecificationLevel @DirectiveExamples("//> using packaging.packageType assembly") @DirectiveExamples("//> using packaging.output foo") @DirectiveExamples("//> using packaging.provided org.apache.spark::spark-sql") -@DirectiveExamples("//> using packaging.dockerFrom openjdk:11") @DirectiveExamples("//> using packaging.graalvmArgs --no-fallback") +@DirectiveExamples("//> using packaging.dockerFrom openjdk:11") +@DirectiveExamples("//> using packaging.dockerImageTag 1.0.0") +@DirectiveExamples("//> using packaging.dockerImageRegistry virtuslab") +@DirectiveExamples("//> using packaging.dockerImageRepository scala-cli") +@DirectiveExamples("//> using packaging.dockerCmd sh") +@DirectiveExamples("//> using packaging.dockerCmd node") @DirectiveUsage( """using packaging.packageType [package type] |using packaging.output [destination path] @@ -32,16 +37,30 @@ import scala.cli.commands.SpecificationLevel |using packaging.dockerImageTag [image tag] |using packaging.dockerImageRegistry [image registry] |using packaging.dockerImageRepository [image repository] + |using packaging.dockerCmd [docker command] |""".stripMargin, """`//> using packaging.packageType` _package-type_ | |`//> using packaging.output` _destination-path_ | + |`//> using packaging.provided` _module_ + | + |`//> using packaging.graalvmArgs` _args_ + | + |`//> using packaging.dockerFrom` _base-docker-image_ + | + |`//> using packaging.dockerImageTag` _image-tag_ + | + |`//> using packaging.dockerImageRegistry` _image-registry_ + | + |`//> using packaging.dockerImageRepository` _image-repository_ + | + |`//> using packaging.dockerCmd` _docker-command_ + | |""".stripMargin ) @DirectiveDescription("Set parameters for packaging") @DirectiveLevel(SpecificationLevel.RESTRICTED) -// format: off final case class Packaging( packageType: Option[Positioned[String]] = None, output: Option[String] = None, @@ -53,7 +72,6 @@ final case class Packaging( dockerImageRepository: Option[String] = None, dockerCmd: Option[String] = None ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = either { val maybePackageTypeOpt = packageType .map { input => diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Platform.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Platform.scala index b8a57838e9..4c9975f5a9 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Platform.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Platform.scala @@ -21,19 +21,19 @@ import scala.cli.commands.SpecificationLevel @DirectiveGroupName("Platform") @DirectiveExamples("//> using platform scala-js") -@DirectiveExamples("//> using platform jvm scala-native") +@DirectiveExamples("//> using platforms jvm scala-native") @DirectiveUsage( "//> using platform (jvm|scala-js|js|scala-native|native)+", - "`//> using platform` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+" + """`//> using platform` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+ + |`//> using platforms` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+ + |""".stripMargin ) @DirectiveDescription("Set the default platform to Scala.js or Scala Native") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class Platform( @DirectiveName("platform") - platforms: List[Positioned[String]] = Nil + platforms: List[Positioned[String]] = Nil ) extends HasBuildOptions { - // format: on private def split(input: String): (String, Option[String]) = { val idx = input.indexOf(':') diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Publish.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Publish.scala index 71c4f9f4dd..4f47c6c3f4 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Publish.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Publish.scala @@ -13,20 +13,52 @@ import scala.cli.commands.SpecificationLevel @DirectivePrefix("publish.") @DirectiveExamples("//> using publish.organization io.github.myself") @DirectiveExamples("//> using publish.name my-library") +@DirectiveExamples("//> using publish.moduleName scala-cli_3") @DirectiveExamples("//> using publish.version 0.1.1") +@DirectiveExamples("//> using publish.url https://github.com/VirtusLab/scala-cli") +@DirectiveExamples("//> using publish.license MIT") +@DirectiveExamples("//> using publish.vcs https://github.com/VirtusLab/scala-cli.git") +@DirectiveExamples("//> using publish.vcs github:VirtusLab/scala-cli") +@DirectiveExamples("//> using publish.description \"Lorem ipsum dolor sit amet\"") +@DirectiveExamples("//> using publish.developer alexme|Alex Me|https://alex.me") +@DirectiveExamples( + "//> using publish.developers alexme|Alex Me|https://alex.me Gedochao|Gedo Chao|https://github.com/Gedochao" +) +@DirectiveExamples("//> using publish.scalaVersionSuffix _2.13") +@DirectiveExamples("//> using publish.scalaVersionSuffix _3") +@DirectiveExamples("//> using publish.scalaPlatformSuffix _sjs1") +@DirectiveExamples("//> using publish.scalaPlatformSuffix _native0.4") @DirectiveUsage( - "//> using publish.(organization|name|version) [value]", + "//> using publish.[key] [value]", """`//> using publish.organization` value | |`//> using publish.name` value | + |`//> using publish.moduleName` value + | |`//> using publish.version` value | + |`//> using publish.url` value + | + |`//> using publish.license` value + | + |`//> using publish.vcs` value + |`//> using publish.scm` value + |`//> using publish.versionControl` value + | + |`//> using publish.description` value + | + |`//> using publish.developer` value + |`//> using publish.developers` value1 value2 + | + |`//> using publish.scalaVersionSuffix` value + | + |`//> using publish.scalaPlatformSuffix` value + | |""".stripMargin ) @DirectiveDescription("Set parameters for publishing") @DirectiveLevel(SpecificationLevel.EXPERIMENTAL) -// format: off final case class Publish( organization: Option[Positioned[String]] = None, name: Option[Positioned[String]] = None, @@ -36,14 +68,13 @@ final case class Publish( license: Option[Positioned[String]] = None, @DirectiveName("scm") @DirectiveName("versionControl") - vcs: Option[Positioned[String]] = None, + vcs: Option[Positioned[String]] = None, description: Option[String] = None, @DirectiveName("developer") - developers: List[Positioned[String]] = Nil, + developers: List[Positioned[String]] = Nil, scalaVersionSuffix: Option[String] = None, scalaPlatformSuffix: Option[String] = None ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = either { val maybeLicense = license diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Repository.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Repository.scala index 6a6d78e99a..0b1e735c42 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Repository.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Repository.scala @@ -19,12 +19,10 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription(Repository.usageMsg) @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class Repository( @DirectiveName("repository") - repositories: List[String] = Nil + repositories: List[String] = Nil ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = { val buildOpt = BuildOptions( classPathOptions = ClassPathOptions( diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/RequirePlatform.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/RequirePlatform.scala index dec415db12..7d8ef27bbb 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/RequirePlatform.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/RequirePlatform.scala @@ -18,12 +18,10 @@ import scala.cli.commands.SpecificationLevel "`//> using target.platform` _platform_" ) @DirectiveLevel(SpecificationLevel.EXPERIMENTAL) -// format: off final case class RequirePlatform( @DirectiveName("platform") - platforms: List[Positioned[String]] = Nil + platforms: List[Positioned[String]] = Nil ) extends HasBuildRequirements { - // format: on def buildRequirements: Either[BuildException, BuildRequirements] = either { val platformSet = value { Platform.parseSpec(platforms.map(_.value).map(options.Platform.normalize)).toRight { diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Resources.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Resources.scala index 2b8ce000bc..5d5b9998c3 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Resources.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Resources.scala @@ -15,8 +15,12 @@ import scala.cli.commands.SpecificationLevel | |//> using resourceDirs _path1_ _path2_ …""".stripMargin, """`//> using resourceDir` _path_ + |`//> using resourceDirs` _path1_ _path2_ … | - |`//> using resourceDirs` _path1_ _path2_ …""".stripMargin + |`//> using test.resourceDir` _path_ + |`//> using test.resourceDirs` _path1_ _path2_ … + | + |""".stripMargin ) @DirectiveDescription("Manually add a resource directory to the class path") @DirectiveLevel(SpecificationLevel.SHOULD) diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaJs.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaJs.scala index a4d5dae061..e76acf18bc 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaJs.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaJs.scala @@ -6,13 +6,29 @@ import scala.build.EitherCps.{either, value} import scala.build.Ops.EitherOptOps import scala.build.directives.* import scala.build.errors.BuildException +import scala.build.internal.Constants import scala.build.options.{BuildOptions, ScalaJsMode, ScalaJsOptions} import scala.build.{Positioned, options} import scala.cli.commands.SpecificationLevel import scala.util.Try @DirectiveGroupName("Scala.js options") +@DirectiveExamples(s"//> using jsVersion ${Constants.scalaJsVersion}") +@DirectiveExamples("//> using jsMode mode") +@DirectiveExamples("//> using jsNoOpt") @DirectiveExamples("//> using jsModuleKind common") +@DirectiveExamples("//> using jsCheckIr") +@DirectiveExamples("//> using jsEmitSourceMaps") +@DirectiveExamples("//> using jsEsModuleImportMap importmap.json") +@DirectiveExamples("//> using jsSmallModuleForPackage test") +@DirectiveExamples("//> using jsDom") +@DirectiveExamples("//> using jsHeader \"#!/usr/bin/env node\n\"") +@DirectiveExamples("//> using jsAllowBigIntsForLongs") +@DirectiveExamples("//> using jsAvoidClasses") +@DirectiveExamples("//> using jsAvoidLetsAndConsts") +@DirectiveExamples("//> using jsModuleSplitStyleStr smallestmodules") +@DirectiveExamples("//> using jsEsVersionStr es2017") +@DirectiveExamples("//> using jsEmitWasm") @DirectiveUsage( "//> using jsVersion|jsMode|jsModuleKind|… _value_", """ @@ -21,37 +37,44 @@ import scala.util.Try |`//> using jsMode` _value_ | |`//> using jsNoOpt` _true|false_ + |`//> using jsNoOpt` | |`//> using jsModuleKind` _value_ | - |`//> using jsSmallModuleForPackage` _value1_ _value2_ … - | |`//> using jsCheckIr` _true|false_ + |`//> using jsCheckIr` | |`//> using jsEmitSourceMaps` _true|false_ + |`//> using jsEmitSourceMaps` + | + |`//> using jsEsModuleImportMap` _value_ + | + |`//> using jsSmallModuleForPackage` _value1_ _value2_ … | |`//> using jsDom` _true|false_ + |`//> using jsDom` | |`//> using jsHeader` _value_ | |`//> using jsAllowBigIntsForLongs` _true|false_ + |`//> using jsAllowBigIntsForLongs` | |`//> using jsAvoidClasses` _true|false_ + |`//> using jsAvoidClasses` | |`//> using jsAvoidLetsAndConsts` _true|false_ + |`//> using jsAvoidLetsAndConsts` | |`//> using jsModuleSplitStyleStr` _value_ | |`//> using jsEsVersionStr` _value_ | |`//> using jsEmitWasm` _true|false_ - | - |`//> using jsEsModuleImportMap` _value_ + |`//> using jsEmitWasm` |""".stripMargin ) @DirectiveDescription("Add Scala.js options") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class ScalaJs( jsVersion: Option[String] = None, jsMode: Option[String] = None, @@ -70,7 +93,6 @@ final case class ScalaJs( jsEsVersionStr: Option[String] = None, jsEmitWasm: Option[Boolean] = None ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = val scalaJsOptions = ScalaJsOptions( version = jsVersion, diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaNative.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaNative.scala index aa1f2aa224..54cc972ecb 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaNative.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaNative.scala @@ -2,12 +2,25 @@ package scala.build.preprocessing.directives import scala.build.directives.* import scala.build.errors.BuildException +import scala.build.internal.Constants import scala.build.options.{BuildOptions, ScalaNativeOptions} import scala.build.{Positioned, options} import scala.cli.commands.SpecificationLevel @DirectiveGroupName("Scala Native options") -@DirectiveExamples("//> using nativeVersion 0.4.0") +@DirectiveExamples(s"//> using nativeGc immix") +@DirectiveExamples(s"//> using nativeMode debug") +@DirectiveExamples(s"//> using nativeLto full") +@DirectiveExamples(s"//> using nativeVersion ${Constants.scalaNativeVersion}") +@DirectiveExamples(s"//> using nativeCompile -flto=thin") +@DirectiveExamples(s"//> using nativeLinking -flto=thin") +@DirectiveExamples(s"//> using nativeClang ./clang") +@DirectiveExamples(s"//> using nativeClangPP ./clang++") +@DirectiveExamples(s"//> using nativeEmbedResources") +@DirectiveExamples(s"//> using nativeEmbedResources true") +@DirectiveExamples(s"//> using nativeTarget library-dynamic") +@DirectiveExamples(s"//> using nativeMultithreading") +@DirectiveExamples(s"//> using nativeMultithreading false") @DirectiveUsage( "//> using nativeGc _value_ | using native-version _value_", """`//> using nativeGc` **immix**_|commix|boehm|none_ @@ -25,15 +38,19 @@ import scala.cli.commands.SpecificationLevel |`//> using nativeClang` _value_ | |`//> using nativeClangPP` _value_ + |`//> using nativeClangPp` _value_ | |`//> using nativeEmbedResources` _true|false_ + |`//> using nativeEmbedResources` | |`//> using nativeTarget` _application|library-dynamic|library-static_ + | + |`//> using nativeMultithreading` _true|false_ + |`//> using nativeMultithreading` """.stripMargin.trim ) @DirectiveDescription("Add Scala Native options") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class ScalaNative( nativeGc: Option[String] = None, nativeMode: Option[String] = None, @@ -43,12 +60,11 @@ final case class ScalaNative( nativeLinking: List[String] = Nil, nativeClang: Option[String] = None, @DirectiveName("nativeClangPp") - nativeClangPP: Option[String] = None, + nativeClangPP: Option[String] = None, nativeEmbedResources: Option[Boolean] = None, nativeTarget: Option[String] = None, nativeMultithreading: Option[Boolean] = None ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = { val nativeOptions = ScalaNativeOptions( gcStr = nativeGc, diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaVersion.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaVersion.scala index 7b29e69c72..93e11eba31 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaVersion.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaVersion.scala @@ -17,11 +17,9 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription("Set the default Scala version") @DirectiveLevel(SpecificationLevel.MUST) -// format: off final case class ScalaVersion( scala: List[DirectiveValueParser.MaybeNumericalString] = Nil ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = scala match { case Nil => Right(BuildOptions()) diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalacOptions.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalacOptions.scala index e3b4add2ff..efbde519eb 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalacOptions.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalacOptions.scala @@ -16,21 +16,33 @@ import scala.cli.commands.SpecificationLevel @DirectiveGroupName("Compiler options") @DirectiveExamples("//> using option -Xasync") -@DirectiveExamples("//> using test.option -Xasync") @DirectiveExamples("//> using options -Xasync -Xfatal-warnings") +@DirectiveExamples("//> using test.option -Xasync") +@DirectiveExamples("//> using test.options -Xasync -Xfatal-warnings") @DirectiveUsage( "using option _option_ | using options _option1_ _option2_ …", - """`//> using option` _option_ + """`//> using scalacOption` _option_ + |`//> using option` _option_ + |`//> using scalacOptions` _option1_ _option2_ … + |`//> using options` _option1_ _option2_ … + | + |`//> using test.scalacOption` _option_ + |`//> using test.option` _option_ + |`//> using test.scalacOptions` _option1_ _option2_ … + |`//> using test.options` _option1_ _option2_ … | - |`//> using options` _option1_ _option2_ …""".stripMargin + |""".stripMargin ) @DirectiveDescription("Add Scala compiler options") @DirectiveLevel(SpecificationLevel.MUST) final case class ScalacOptions( @DirectiveName("option") + @DirectiveName("scalacOption") + @DirectiveName("scalacOptions") options: List[Positioned[String]] = Nil, @DirectiveName("test.option") @DirectiveName("test.options") + @DirectiveName("test.scalacOption") @DirectiveName("test.scalacOptions") testOptions: List[Positioned[String]] = Nil ) extends HasBuildOptionsWithRequirements { diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Sources.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Sources.scala index 0224b8bc1b..82b1128826 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Sources.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Sources.scala @@ -22,13 +22,11 @@ import scala.util.Try "Manually add sources to the project. Does not support chaining, sources are added only once, not recursively." ) @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class Sources( @DirectiveName("file") - files: DirectiveValueParser.WithScopePath[List[Positioned[String]]] = - DirectiveValueParser.WithScopePath.empty(Nil) + files: DirectiveValueParser.WithScopePath[List[Positioned[String]]] = + DirectiveValueParser.WithScopePath.empty(Nil) ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = either { val paths = files diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Tests.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Tests.scala index 81c6ae7367..b9066bcace 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Tests.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Tests.scala @@ -14,12 +14,10 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription("Set the test framework") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class Tests( @DirectiveName("test.framework") testFramework: Option[String] = None ) extends HasBuildOptions { - // format: on def buildOptions: Either[BuildException, BuildOptions] = { val buildOpt = BuildOptions( testOptions = TestOptions( diff --git a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Toolkit.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Toolkit.scala index 22f5799a12..00697166c5 100644 --- a/modules/directives/src/main/scala/scala/build/preprocessing/directives/Toolkit.scala +++ b/modules/directives/src/main/scala/scala/build/preprocessing/directives/Toolkit.scala @@ -13,12 +13,15 @@ import scala.build.options.* import scala.cli.commands.SpecificationLevel @DirectiveGroupName("Toolkit") -@DirectiveExamples("//> using toolkit 0.1.0") +@DirectiveExamples(s"//> using toolkit ${Constants.toolkitDefaultVersion}") @DirectiveExamples("//> using toolkit default") @DirectiveExamples("//> using test.toolkit default") @DirectiveUsage( "//> using toolkit _version_", - "`//> using toolkit` _version_" + """`//> using toolkit` _version_ + | + |//> using test.toolkit` _version_ + |""".stripMargin ) @DirectiveDescription( s"Use a toolkit as dependency (not supported in Scala 2.12), 'default' version for Scala toolkit: ${Constants.toolkitDefaultVersion}, 'default' version for typelevel toolkit: ${Constants.typelevelToolkitDefaultVersion}" diff --git a/website/docs/commands/package.md b/website/docs/commands/package.md index 0dc585248b..d17eaa49e6 100644 --- a/website/docs/commands/package.md +++ b/website/docs/commands/package.md @@ -525,3 +525,12 @@ The using directive allows you to define the image repository. ```scala compile power //> using packaging.dockerImageRepository scala-cli ``` + +#### packaging.dockerCmd + +The using directive allows you to override the executable used to run the application in docker, +otherwise it defaults to `sh` for the JVM platform and `node` for the JS platform + +```scala compile power +//> using packaging.dockerCmd node +``` diff --git a/website/docs/reference/directives.md b/website/docs/reference/directives.md index d855b9e718..e088f2ad1d 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -14,6 +14,10 @@ Add benchmarking options `//> using jmhVersion` _value_ #### Examples +`//> using jmh` + +`//> using jmh true` + `//> using jmhVersion 1.37` ### BuildInfo @@ -29,16 +33,26 @@ Generate BuildInfo for project Add Scala compiler options +`//> using scalacOption` _option_ `//> using option` _option_ - +`//> using scalacOptions` _option1_ _option2_ … `//> using options` _option1_ _option2_ … +`//> using test.scalacOption` _option_ +`//> using test.option` _option_ +`//> using test.scalacOptions` _option1_ _option2_ … +`//> using test.options` _option1_ _option2_ … + + + #### Examples `//> using option -Xasync` +`//> using options -Xasync -Xfatal-warnings` + `//> using test.option -Xasync` -`//> using options -Xasync -Xfatal-warnings` +`//> using test.options -Xasync -Xfatal-warnings` ### Compiler plugins @@ -67,9 +81,17 @@ Method used to compute the version for BuildInfo Manually add JAR(s) to the class path `//> using jar` _path_ - `//> using jars` _path1_ _path2_ … +`//> using test.jar` _path_ +`//> using test.jars` _path1_ _path2_ … + +`//> using source.jar` _path_ +`//> using source.jars` _path1_ _path2_ … + +`//> using test.source.jar` _path_ +`//> using test.source.jars` _path1_ _path2_ … + #### Examples `//> using jar /Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.7/shapeless_2.13-2.3.7.jar` @@ -99,17 +121,34 @@ Manually add sources to the project. Does not support chaining, sources are adde Add dependencies `//> using dep` _org_`:`name`:`ver +`//> using deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + +`//> using test.dep` _org_`:`name`:`ver +`//> using test.deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using test.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + +`//> using compileOnly.dep` _org_`:`name`:`ver +`//> using compileOnly.deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using compileOnly.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + +`//> using scalafix.dep` _org_`:`name`:`ver +`//> using scalafix.deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using scalafix.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + #### Examples `//> using dep com.lihaoyi::os-lib:0.9.1` +`//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar` + `//> using test.dep org.scalatest::scalatest:3.2.10` `//> using test.dep org.scalameta::munit:0.7.29` `//> using compileOnly.dep com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:2.23.2` -`//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar` +`//> using scalafix.dep com.github.xuwei-k::scalafix-rules:0.5.1` ### Exclude sources @@ -154,6 +193,11 @@ Sets Java home used to run your application or tests Add Java options which will be passed when running an application. `//> using javaOpt` _options_ +`//> using javaOptions` _options_` + +`//> using test.javaOpt` _options_ +`//> using test.javaOptions` _options_` + #### Examples `//> using javaOpt -Xmx2g -Dsomething=a` @@ -165,9 +209,11 @@ Add Java options which will be passed when running an application. Add Java properties `//> using javaProp` _key=value_ - `//> using javaProp` _key_ +`//> using test.javaProp` _key=value_ +`//> using test.javaProp` _key_ + #### Examples `//> using javaProp foo1=bar foo2` @@ -179,6 +225,11 @@ Add Java properties Add Javac options which will be passed when compiling sources. `//> using javacOpt` _options_ +`//> using javacOptions` _options_ + +`//> using test.javacOpt` _options_ +`//> using test.javacOptions` _options_ + #### Examples `//> using javacOpt -source 1.8 -target 1.8` @@ -211,6 +262,20 @@ Set parameters for packaging `//> using packaging.output` _destination-path_ +`//> using packaging.provided` _module_ + +`//> using packaging.graalvmArgs` _args_ + +`//> using packaging.dockerFrom` _base-docker-image_ + +`//> using packaging.dockerImageTag` _image-tag_ + +`//> using packaging.dockerImageRegistry` _image-registry_ + +`//> using packaging.dockerImageRepository` _image-repository_ + +`//> using packaging.dockerCmd` _docker-command_ + #### Examples @@ -220,20 +285,32 @@ Set parameters for packaging `//> using packaging.provided org.apache.spark::spark-sql` +`//> using packaging.graalvmArgs --no-fallback` + `//> using packaging.dockerFrom openjdk:11` -`//> using packaging.graalvmArgs --no-fallback` +`//> using packaging.dockerImageTag 1.0.0` + +`//> using packaging.dockerImageRegistry virtuslab` + +`//> using packaging.dockerImageRepository scala-cli` + +`//> using packaging.dockerCmd sh` + +`//> using packaging.dockerCmd node` ### Platform Set the default platform to Scala.js or Scala Native `//> using platform` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+ +`//> using platforms` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+ + #### Examples `//> using platform scala-js` -`//> using platform jvm scala-native` +`//> using platforms jvm scala-native` ### Publish @@ -243,8 +320,27 @@ Set parameters for publishing `//> using publish.name` value +`//> using publish.moduleName` value + `//> using publish.version` value +`//> using publish.url` value + +`//> using publish.license` value + +`//> using publish.vcs` value +`//> using publish.scm` value +`//> using publish.versionControl` value + +`//> using publish.description` value + +`//> using publish.developer` value +`//> using publish.developers` value1 value2 + +`//> using publish.scalaVersionSuffix` value + +`//> using publish.scalaPlatformSuffix` value + #### Examples @@ -252,8 +348,32 @@ Set parameters for publishing `//> using publish.name my-library` +`//> using publish.moduleName scala-cli_3` + `//> using publish.version 0.1.1` +`//> using publish.url https://github.com/VirtusLab/scala-cli` + +`//> using publish.license MIT` + +`//> using publish.vcs https://github.com/VirtusLab/scala-cli.git` + +`//> using publish.vcs github:VirtusLab/scala-cli` + +`//> using publish.description "Lorem ipsum dolor sit amet"` + +`//> using publish.developer alexme|Alex Me|https://alex.me` + +`//> using publish.developers alexme|Alex Me|https://alex.me Gedochao|Gedo Chao|https://github.com/Gedochao` + +`//> using publish.scalaVersionSuffix _2.13` + +`//> using publish.scalaVersionSuffix _3` + +`//> using publish.scalaPlatformSuffix _sjs1` + +`//> using publish.scalaPlatformSuffix _native0.4` + ### Publish (CI) Set CI parameters for publishing @@ -327,9 +447,13 @@ Accepts predefined repositories supported by Coursier (like `sonatype:snapshots` Manually add a resource directory to the class path `//> using resourceDir` _path_ - `//> using resourceDirs` _path1_ _path2_ … +`//> using test.resourceDir` _path_ +`//> using test.resourceDirs` _path1_ _path2_ … + + + #### Examples `//> using resourceDir ./resources` @@ -354,13 +478,42 @@ Add Scala Native options `//> using nativeClang` _value_ `//> using nativeClangPP` _value_ +`//> using nativeClangPp` _value_ `//> using nativeEmbedResources` _true|false_ +`//> using nativeEmbedResources` `//> using nativeTarget` _application|library-dynamic|library-static_ +`//> using nativeMultithreading` _true|false_ +`//> using nativeMultithreading` + #### Examples -`//> using nativeVersion 0.4.0` +`//> using nativeGc immix` + +`//> using nativeMode debug` + +`//> using nativeLto full` + +`//> using nativeVersion 0.5.7` + +`//> using nativeCompile -flto=thin` + +`//> using nativeLinking -flto=thin` + +`//> using nativeClang ./clang` + +`//> using nativeClangPP ./clang++` + +`//> using nativeEmbedResources` + +`//> using nativeEmbedResources true` + +`//> using nativeTarget library-dynamic` + +`//> using nativeMultithreading` + +`//> using nativeMultithreading false` ### Scala version @@ -387,37 +540,76 @@ Add Scala.js options `//> using jsMode` _value_ `//> using jsNoOpt` _true|false_ +`//> using jsNoOpt` `//> using jsModuleKind` _value_ -`//> using jsSmallModuleForPackage` _value1_ _value2_ … - `//> using jsCheckIr` _true|false_ +`//> using jsCheckIr` `//> using jsEmitSourceMaps` _true|false_ +`//> using jsEmitSourceMaps` + +`//> using jsEsModuleImportMap` _value_ + +`//> using jsSmallModuleForPackage` _value1_ _value2_ … `//> using jsDom` _true|false_ +`//> using jsDom` `//> using jsHeader` _value_ `//> using jsAllowBigIntsForLongs` _true|false_ +`//> using jsAllowBigIntsForLongs` `//> using jsAvoidClasses` _true|false_ +`//> using jsAvoidClasses` `//> using jsAvoidLetsAndConsts` _true|false_ +`//> using jsAvoidLetsAndConsts` `//> using jsModuleSplitStyleStr` _value_ `//> using jsEsVersionStr` _value_ `//> using jsEmitWasm` _true|false_ - -`//> using jsEsModuleImportMap` _value_ +`//> using jsEmitWasm` #### Examples +`//> using jsVersion 1.18.2` + +`//> using jsMode mode` + +`//> using jsNoOpt` + `//> using jsModuleKind common` +`//> using jsCheckIr` + +`//> using jsEmitSourceMaps` + +`//> using jsEsModuleImportMap importmap.json` + +`//> using jsSmallModuleForPackage test` + +`//> using jsDom` + +`//> using jsHeader "#!/usr/bin/env node +"` + +`//> using jsAllowBigIntsForLongs` + +`//> using jsAvoidClasses` + +`//> using jsAvoidLetsAndConsts` + +`//> using jsModuleSplitStyleStr smallestmodules` + +`//> using jsEsVersionStr es2017` + +`//> using jsEmitWasm` + ### Test framework Set the test framework @@ -433,8 +625,11 @@ Use a toolkit as dependency (not supported in Scala 2.12), 'default' version for `//> using toolkit` _version_ +//> using test.toolkit` _version_ + + #### Examples -`//> using toolkit 0.1.0` +`//> using toolkit 0.7.0` `//> using toolkit default` diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index ef5cc1d4c4..c309c8cfde 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -15,16 +15,26 @@ Documentation is split into sections in the spirit of RFC keywords (`MUST`, `SHO Add Scala compiler options +`//> using scalacOption` _option_ `//> using option` _option_ - +`//> using scalacOptions` _option1_ _option2_ … `//> using options` _option1_ _option2_ … +`//> using test.scalacOption` _option_ +`//> using test.option` _option_ +`//> using test.scalacOptions` _option1_ _option2_ … +`//> using test.options` _option1_ _option2_ … + + + #### Examples `//> using option -Xasync` +`//> using options -Xasync -Xfatal-warnings` + `//> using test.option -Xasync` -`//> using options -Xasync -Xfatal-warnings` +`//> using test.options -Xasync -Xfatal-warnings` ### Compiler plugins @@ -40,23 +50,45 @@ Adds compiler plugins Add dependencies `//> using dep` _org_`:`name`:`ver +`//> using deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + +`//> using test.dep` _org_`:`name`:`ver +`//> using test.deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using test.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + +`//> using compileOnly.dep` _org_`:`name`:`ver +`//> using compileOnly.deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using compileOnly.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + +`//> using scalafix.dep` _org_`:`name`:`ver +`//> using scalafix.deps` _org_`:`name`:`ver _org_`:`name`:`ver +`//> using scalafix.dependencies` _org_`:`name`:`ver _org_`:`name`:`ver + #### Examples `//> using dep com.lihaoyi::os-lib:0.9.1` +`//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar` + `//> using test.dep org.scalatest::scalatest:3.2.10` `//> using test.dep org.scalameta::munit:0.7.29` `//> using compileOnly.dep com.github.plokhotnyuk.jsoniter-scala::jsoniter-scala-macros:2.23.2` -`//> using dep tabby:tabby:0.2.3,url=https://github.com/bjornregnell/tabby/releases/download/v0.2.3/tabby_3-0.2.3.jar` +`//> using scalafix.dep com.github.xuwei-k::scalafix-rules:0.5.1` ### Java options Add Java options which will be passed when running an application. `//> using javaOpt` _options_ +`//> using javaOptions` _options_` + +`//> using test.javaOpt` _options_ +`//> using test.javaOptions` _options_` + #### Examples `//> using javaOpt -Xmx2g -Dsomething=a` @@ -68,9 +100,11 @@ Add Java options which will be passed when running an application. Add Java properties `//> using javaProp` _key=value_ - `//> using javaProp` _key_ +`//> using test.javaProp` _key=value_ +`//> using test.javaProp` _key_ + #### Examples `//> using javaProp foo1=bar foo2` @@ -108,9 +142,17 @@ Set the default Scala version Manually add JAR(s) to the class path `//> using jar` _path_ - `//> using jars` _path1_ _path2_ … +`//> using test.jar` _path_ +`//> using test.jars` _path1_ _path2_ … + +`//> using source.jar` _path_ +`//> using source.jars` _path1_ _path2_ … + +`//> using test.source.jar` _path_ +`//> using test.source.jars` _path1_ _path2_ … + #### Examples `//> using jar /Users/alexandre/Library/Caches/Coursier/v1/https/repo1.maven.org/maven2/com/chuusai/shapeless_2.13/2.3.7/shapeless_2.13-2.3.7.jar` @@ -178,6 +220,11 @@ Sets Java home used to run your application or tests Add Javac options which will be passed when compiling sources. `//> using javacOpt` _options_ +`//> using javacOptions` _options_ + +`//> using test.javacOpt` _options_ +`//> using test.javacOptions` _options_ + #### Examples `//> using javacOpt -source 1.8 -target 1.8` @@ -189,11 +236,13 @@ Add Javac options which will be passed when compiling sources. Set the default platform to Scala.js or Scala Native `//> using platform` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+ +`//> using platforms` (`jvm`|`scala-js`|`js`|`scala-native`|`native`)+ + #### Examples `//> using platform scala-js` -`//> using platform jvm scala-native` +`//> using platforms jvm scala-native` ### Repository @@ -217,9 +266,13 @@ Accepts predefined repositories supported by Coursier (like `sonatype:snapshots` Manually add a resource directory to the class path `//> using resourceDir` _path_ - `//> using resourceDirs` _path1_ _path2_ … +`//> using test.resourceDir` _path_ +`//> using test.resourceDirs` _path1_ _path2_ … + + + #### Examples `//> using resourceDir ./resources` @@ -244,13 +297,42 @@ Add Scala Native options `//> using nativeClang` _value_ `//> using nativeClangPP` _value_ +`//> using nativeClangPp` _value_ `//> using nativeEmbedResources` _true|false_ +`//> using nativeEmbedResources` `//> using nativeTarget` _application|library-dynamic|library-static_ +`//> using nativeMultithreading` _true|false_ +`//> using nativeMultithreading` + #### Examples -`//> using nativeVersion 0.4.0` +`//> using nativeGc immix` + +`//> using nativeMode debug` + +`//> using nativeLto full` + +`//> using nativeVersion 0.5.7` + +`//> using nativeCompile -flto=thin` + +`//> using nativeLinking -flto=thin` + +`//> using nativeClang ./clang` + +`//> using nativeClangPP ./clang++` + +`//> using nativeEmbedResources` + +`//> using nativeEmbedResources true` + +`//> using nativeTarget library-dynamic` + +`//> using nativeMultithreading` + +`//> using nativeMultithreading false` ### Scala.js options @@ -262,37 +344,76 @@ Add Scala.js options `//> using jsMode` _value_ `//> using jsNoOpt` _true|false_ +`//> using jsNoOpt` `//> using jsModuleKind` _value_ -`//> using jsSmallModuleForPackage` _value1_ _value2_ … - `//> using jsCheckIr` _true|false_ +`//> using jsCheckIr` `//> using jsEmitSourceMaps` _true|false_ +`//> using jsEmitSourceMaps` + +`//> using jsEsModuleImportMap` _value_ + +`//> using jsSmallModuleForPackage` _value1_ _value2_ … `//> using jsDom` _true|false_ +`//> using jsDom` `//> using jsHeader` _value_ `//> using jsAllowBigIntsForLongs` _true|false_ +`//> using jsAllowBigIntsForLongs` `//> using jsAvoidClasses` _true|false_ +`//> using jsAvoidClasses` `//> using jsAvoidLetsAndConsts` _true|false_ +`//> using jsAvoidLetsAndConsts` `//> using jsModuleSplitStyleStr` _value_ `//> using jsEsVersionStr` _value_ `//> using jsEmitWasm` _true|false_ - -`//> using jsEsModuleImportMap` _value_ +`//> using jsEmitWasm` #### Examples +`//> using jsVersion 1.18.2` + +`//> using jsMode mode` + +`//> using jsNoOpt` + `//> using jsModuleKind common` +`//> using jsCheckIr` + +`//> using jsEmitSourceMaps` + +`//> using jsEsModuleImportMap importmap.json` + +`//> using jsSmallModuleForPackage test` + +`//> using jsDom` + +`//> using jsHeader "#!/usr/bin/env node +"` + +`//> using jsAllowBigIntsForLongs` + +`//> using jsAvoidClasses` + +`//> using jsAvoidLetsAndConsts` + +`//> using jsModuleSplitStyleStr smallestmodules` + +`//> using jsEsVersionStr es2017` + +`//> using jsEmitWasm` + ### Test framework Set the test framework @@ -308,8 +429,11 @@ Use a toolkit as dependency (not supported in Scala 2.12), 'default' version for `//> using toolkit` _version_ +//> using test.toolkit` _version_ + + #### Examples -`//> using toolkit 0.1.0` +`//> using toolkit 0.7.0` `//> using toolkit default`