From dbcad25576b967ec14d90519c8bff041940ea413 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 1 Apr 2025 17:22:33 +0200 Subject: [PATCH 01/15] Add missing reference docs for `publish.*` directives --- .../preprocessing/directives/Publish.scala | 35 ++++++++++++++- website/docs/reference/directives.md | 43 +++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) 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..96b9690de1 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,15 +13,48 @@ 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") diff --git a/website/docs/reference/directives.md b/website/docs/reference/directives.md index d855b9e718..a6600a034e 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -243,8 +243,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 +271,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 From af872067aa9b62dd456470e5a5b5242a3f509526 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 1 Apr 2025 17:55:21 +0200 Subject: [PATCH 02/15] Add missing reference docs for `*.dep` directives --- .../preprocessing/directives/Dependency.scala | 22 +++++++++++++++++-- website/docs/reference/directives.md | 19 +++++++++++++++- .../reference/scala-command/directives.md | 19 +++++++++++++++- 3 files changed, 56 insertions(+), 4 deletions(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index a6600a034e..4c0a274d7f 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -99,17 +99,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 diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index ef5cc1d4c4..e05f3c74f0 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -40,17 +40,34 @@ 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 From b9cafba3e26aa43333a42713a2d1715e7850ed7a Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 1 Apr 2025 18:01:06 +0200 Subject: [PATCH 03/15] Add missing reference docs for `*.jar` directives --- .../build/preprocessing/directives/CustomJar.scala | 10 +++++++++- website/docs/reference/directives.md | 10 +++++++++- website/docs/reference/scala-command/directives.md | 10 +++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index 4c0a274d7f..f536b0aef5 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -67,9 +67,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` diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index e05f3c74f0..59511c2a3e 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -125,9 +125,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` From 6c80fd0ecf77b1b856a87044d2d14bf2999164b1 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 13:23:34 +0200 Subject: [PATCH 04/15] Add missing reference docs for `*.javacOptions` directives --- .../build/preprocessing/directives/JavacOptions.scala | 7 ++++++- website/docs/reference/directives.md | 5 +++++ website/docs/reference/scala-command/directives.md | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index f536b0aef5..50d02575ba 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -204,6 +204,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` diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index 59511c2a3e..525b868871 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -203,6 +203,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` From 03302bb31415ecfe47fd6c46b6c029fa5b77d72b Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 13:28:22 +0200 Subject: [PATCH 05/15] Add missing reference docs for `*.javaOptions` directives --- .../scala/build/preprocessing/directives/JavaOptions.scala | 7 ++++++- website/docs/reference/directives.md | 5 +++++ website/docs/reference/scala-command/directives.md | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index 50d02575ba..b2114f5a96 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -179,6 +179,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` diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index 525b868871..db5e7f6a16 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -74,6 +74,11 @@ Add dependencies 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` From 7de2e66bcde5de9482afc446d27d08e41a71b7f9 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 13:29:30 +0200 Subject: [PATCH 06/15] Add missing reference docs for `*.javaProperty` directives --- .../scala/build/preprocessing/directives/JavaProps.scala | 4 +++- website/docs/reference/directives.md | 4 +++- website/docs/reference/scala-command/directives.md | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index b2114f5a96..bf08f376da 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -195,9 +195,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` diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index db5e7f6a16..fc8e86b4a5 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -90,9 +90,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` From e1fd4c146fbd201ac35dc538b45abe4dae8e61d8 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 14:20:26 +0200 Subject: [PATCH 07/15] Add missing reference docs for `packaging.*` directives --- .../preprocessing/directives/Packaging.scala | 22 +++++++++++++++- website/docs/commands/package.md | 9 +++++++ website/docs/reference/directives.md | 26 ++++++++++++++++++- 3 files changed, 55 insertions(+), 2 deletions(-) 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..339da276d4 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,11 +37,26 @@ 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") 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 bf08f376da..f0cc7f2dad 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -248,6 +248,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 @@ -257,9 +271,19 @@ 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 From edef4bb44d14719b40c3b00577169365c56a776c Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 14:21:42 +0200 Subject: [PATCH 08/15] Add missing reference docs for `platform` directives --- .../scala/build/preprocessing/directives/Platform.scala | 6 ++++-- website/docs/reference/directives.md | 4 +++- website/docs/reference/scala-command/directives.md | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) 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..27023fc184 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,10 +21,12 @@ 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) diff --git a/website/docs/reference/directives.md b/website/docs/reference/directives.md index f0cc7f2dad..1c64b9ab3e 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -290,11 +290,13 @@ Set parameters for packaging 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 diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index fc8e86b4a5..c1f2278271 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -226,11 +226,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 From eb00a494b3e698f50e94220a2ddd5e62bd80b727 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 14:23:44 +0200 Subject: [PATCH 09/15] Add missing reference docs for `*.resourceDir` directives --- .../scala/build/preprocessing/directives/Resources.scala | 6 +++++- website/docs/reference/directives.md | 6 +++++- website/docs/reference/scala-command/directives.md | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index 1c64b9ab3e..958e37e882 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -433,9 +433,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` diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index c1f2278271..15bd65e473 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -256,9 +256,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` From bee68ef1309e87093082b42a3f9ebefd67fe3f8d Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 14:26:48 +0200 Subject: [PATCH 10/15] Add missing reference docs for `*.option` directives --- .../directives/ScalacOptions.scala | 18 +++++++++++++++--- website/docs/reference/directives.md | 14 ++++++++++++-- .../docs/reference/scala-command/directives.md | 14 ++++++++++++-- 3 files changed, 39 insertions(+), 7 deletions(-) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index 958e37e882..fadd9452aa 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -29,16 +29,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 diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index 15bd65e473..30c20383b7 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 From bcd403335c98061e9c784e9a209d1ed5d0b1a95a Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 14:49:00 +0200 Subject: [PATCH 11/15] Add missing reference docs for Scala.js options' directives --- .../preprocessing/directives/ScalaJs.scala | 32 +++++++++++-- website/docs/reference/directives.md | 47 +++++++++++++++++-- .../reference/scala-command/directives.md | 47 +++++++++++++++++-- 3 files changed, 114 insertions(+), 12 deletions(-) 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..9c9cf812a9 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,32 +37,40 @@ 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") diff --git a/website/docs/reference/directives.md b/website/docs/reference/directives.md index fadd9452aa..5aa1d4c843 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -507,37 +507,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 diff --git a/website/docs/reference/scala-command/directives.md b/website/docs/reference/scala-command/directives.md index 30c20383b7..ced2b7e1d0 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -315,37 +315,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 From 81a8f0464e00736d3ffe3a4eae3569aeee7329d7 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 15:30:17 +0200 Subject: [PATCH 12/15] Add missing reference docs for Scala Native options' directives --- .../directives/ScalaNative.scala | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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..13863de989 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,10 +38,15 @@ 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") From 294a9aff1f7a0f860271ac6f7096fd58b546c40e Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 15:34:35 +0200 Subject: [PATCH 13/15] Add missing reference docs for Toolkit directives --- .../preprocessing/directives/Toolkit.scala | 7 ++-- website/docs/reference/directives.md | 36 +++++++++++++++++-- .../reference/scala-command/directives.md | 36 +++++++++++++++++-- 3 files changed, 73 insertions(+), 6 deletions(-) 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/reference/directives.md b/website/docs/reference/directives.md index 5aa1d4c843..41066e1b36 100644 --- a/website/docs/reference/directives.md +++ b/website/docs/reference/directives.md @@ -474,13 +474,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 @@ -592,8 +621,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 ced2b7e1d0..c309c8cfde 100644 --- a/website/docs/reference/scala-command/directives.md +++ b/website/docs/reference/scala-command/directives.md @@ -297,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 @@ -400,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` From 45f163a15d5b0f33949ad6d45528beb5432d460a Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 15:35:39 +0200 Subject: [PATCH 14/15] Add missing reference docs for JMH directives --- .../scala/build/preprocessing/directives/Benchmarking.scala | 2 ++ website/docs/reference/directives.md | 4 ++++ 2 files changed, 6 insertions(+) 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/website/docs/reference/directives.md b/website/docs/reference/directives.md index 41066e1b36..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 From 44bde5daa04c656e204202514c2aa18ddd8310ac Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Wed, 2 Apr 2025 15:40:49 +0200 Subject: [PATCH 15/15] NIT Fix inconsistent formatting in `using` directive definitions --- .../preprocessing/directives/ComputeVersion.scala | 7 ++----- .../build/preprocessing/directives/Exclude.scala | 6 +----- .../build/preprocessing/directives/JavaHome.scala | 2 -- .../scala/build/preprocessing/directives/Jvm.scala | 6 +----- .../build/preprocessing/directives/MainClass.scala | 14 +++----------- .../build/preprocessing/directives/Packaging.scala | 2 -- .../build/preprocessing/directives/Platform.scala | 4 +--- .../build/preprocessing/directives/Publish.scala | 6 ++---- .../preprocessing/directives/Repository.scala | 4 +--- .../preprocessing/directives/RequirePlatform.scala | 4 +--- .../build/preprocessing/directives/ScalaJs.scala | 2 -- .../preprocessing/directives/ScalaNative.scala | 4 +--- .../preprocessing/directives/ScalaVersion.scala | 2 -- .../build/preprocessing/directives/Sources.scala | 6 ++---- .../build/preprocessing/directives/Tests.scala | 2 -- 15 files changed, 15 insertions(+), 56 deletions(-) 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/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/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 339da276d4..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 @@ -61,7 +61,6 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription("Set parameters for packaging") @DirectiveLevel(SpecificationLevel.RESTRICTED) -// format: off final case class Packaging( packageType: Option[Positioned[String]] = None, output: Option[String] = None, @@ -73,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 27023fc184..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 @@ -30,12 +30,10 @@ import scala.cli.commands.SpecificationLevel ) @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 96b9690de1..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 @@ -59,7 +59,6 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription("Set parameters for publishing") @DirectiveLevel(SpecificationLevel.EXPERIMENTAL) -// format: off final case class Publish( organization: Option[Positioned[String]] = None, name: Option[Positioned[String]] = None, @@ -69,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/ScalaJs.scala b/modules/directives/src/main/scala/scala/build/preprocessing/directives/ScalaJs.scala index 9c9cf812a9..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 @@ -75,7 +75,6 @@ import scala.util.Try ) @DirectiveDescription("Add Scala.js options") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class ScalaJs( jsVersion: Option[String] = None, jsMode: Option[String] = None, @@ -94,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 13863de989..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 @@ -51,7 +51,6 @@ import scala.cli.commands.SpecificationLevel ) @DirectiveDescription("Add Scala Native options") @DirectiveLevel(SpecificationLevel.SHOULD) -// format: off final case class ScalaNative( nativeGc: Option[String] = None, nativeMode: Option[String] = None, @@ -61,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/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(