Skip to content

Commit ca02f6e

Browse files
romanowskiGedochao
andauthored
Runner specification (#1445)
* Define specification levels * Tag options for used in scala command * Tag commands with specification level * Tag directives with specification level * Make shebang a MUST comamnd for runner * Address review and CI problems * Add scaladoc to levels * Apply suggestions from code review Co-authored-by: Piotr Chabelski <ged.subfan@gmail.com> * scalafix * format * Fixes for caseapp in Scala 3 Co-authored-by: Piotr Chabelski <ged.subfan@gmail.com>
1 parent 1bb7657 commit ca02f6e

File tree

113 files changed

+6864
-394
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+6864
-394
lines changed

build.sc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,8 @@ trait Directives extends ScalaCliSbtModule with ScalaCliPublishModule with HasTe
415415
def moduleDeps = Seq(
416416
options,
417417
core,
418-
`build-macros`
418+
`build-macros`,
419+
`cli-options`
419420
)
420421
def scalacOptions = T {
421422
super.scalacOptions() ++ asyncScalacOptions(scalaVersion())
@@ -435,6 +436,9 @@ trait Directives extends ScalaCliSbtModule with ScalaCliPublishModule with HasTe
435436
Deps.usingDirectives
436437
)
437438

439+
def repositoriesTask =
440+
T.task(super.repositoriesTask() ++ deps.customRepositories)
441+
438442
object test extends Tests with ScalaCliTests {
439443
def ivyDeps = super.ivyDeps() ++ Agg(
440444
Deps.pprint
@@ -515,6 +519,9 @@ trait Options extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
515519
Deps.jsoniterMacros
516520
)
517521

522+
def repositoriesTask =
523+
T.task(super.repositoriesTask() ++ deps.customRepositories)
524+
518525
object test extends Tests with ScalaCliTests {
519526
// uncomment below to debug tests in attach mode on 5005 port
520527
// def forkArgs = T {
@@ -595,6 +602,9 @@ trait Build extends ScalaCliSbtModule with ScalaCliPublishModule with HasTests
595602
Deps.zipInputStream
596603
) ++ (if (scalaVersion().startsWith("3")) Agg() else Agg(Deps.shapeless))
597604

605+
def repositoriesTask =
606+
T.task(super.repositoriesTask() ++ deps.customRepositories)
607+
598608
object test extends Tests with ScalaCliTests {
599609
def ivyDeps = super.ivyDeps() ++ Agg(
600610
Deps.pprint,
@@ -741,7 +751,6 @@ trait Cli extends SbtModule with ProtoBuildModule with CliLaunchers
741751
}
742752
def moduleDeps = Seq(
743753
`build-module`,
744-
`cli-options`,
745754
config(Scala.scala3),
746755
`scala3-graal`(Scala.scala3)
747756
)

modules/cli-options/src/main/scala/scala/cli/commands/AboutOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ final case class AboutOptions(
1313
logging: LoggingOptions = LoggingOptions(),
1414
@Hidden
1515
@HelpMessage(HelpMessages.passwordOption)
16+
@Tag(tags.implementation)
1617
ghToken: Option[PasswordOption] = None
1718
) extends HasLoggingOptions
1819
// format: on

modules/cli-options/src/main/scala/scala/cli/commands/BenchmarkingOptions.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import caseapp.*
55
// format: off
66
final case class BenchmarkingOptions(
77
@Group("Benchmarking")
8-
@HelpMessage("[experimental] Run JMH benchmarks")
8+
@Tag(tags.experimental)
9+
@HelpMessage("Run JMH benchmarks")
910
jmh: Option[Boolean] = None,
1011
@Group("Benchmarking")
11-
@HelpMessage("[experimental] Set JMH version")
12+
@Tag(tags.experimental)
13+
@HelpMessage("Set JMH version")
1214
@ValueDescription("version")
1315
jmhVersion: Option[String] = None
1416
)

modules/cli-options/src/main/scala/scala/cli/commands/CompileOptions.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ final case class CompileOptions(
1717

1818
@Name("p")
1919
@Name("printClasspath")
20+
@Tag(tags.restricted)
2021
@HelpMessage("Print the resulting class path")
2122
printClassPath: Boolean = false,
2223

2324
@HelpMessage("Compile test scope")
25+
@Tag(tags.should)
2426
test: Boolean = false
2527
) extends HasSharedOptions
2628
// format: on

modules/cli-options/src/main/scala/scala/cli/commands/CoursierOptions.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ final case class CoursierOptions(
99
@Group("Dependency")
1010
@HelpMessage("Specify a TTL for changing dependencies, such as snapshots")
1111
@ValueDescription("duration|Inf")
12+
@Tag(tags.implementation)
1213
@Hidden
1314
ttl: Option[String] = None,
1415
@Group("Dependency")
1516
@HelpMessage("Set the coursier cache location")
1617
@ValueDescription("path")
18+
@Tag(tags.implementation)
1719
@Hidden
1820
cache: Option[String] = None,
1921
@Group("Dependency")
2022
@HelpMessage("Enable checksum validation of artifacts downloaded by coursier")
23+
@Tag(tags.implementation)
2124
@Hidden
2225
coursierValidateChecksums: Option[Boolean] = None
2326
)

modules/cli-options/src/main/scala/scala/cli/commands/CrossOptions.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import caseapp.*
44

55
// format: off
66
final case class CrossOptions(
7-
@HelpMessage("[experimental] Run given command against all provided Scala versions and/or platforms")
7+
@Tag(tags.experimental)
8+
@HelpMessage("Run given command against all provided Scala versions and/or platforms")
89
cross: Option[Boolean] = None
910
)
1011
// format: on

modules/cli-options/src/main/scala/scala/cli/commands/DocOptions.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,18 @@ final case class DocOptions(
1111
@Recurse
1212
shared: SharedOptions = SharedOptions(),
1313
@Group("Doc")
14+
@Tag(tags.must)
1415
@HelpMessage("Set the destination path")
1516
@Name("o")
1617
output: Option[String] = None,
1718
@Group("Doc")
18-
@HelpMessage("Overwrite the destination directory, if it exists")
19+
@HelpMessage("Overwrite the destination directory, if it exists")
20+
@Tag(tags.must)
1921
@Name("f")
2022
force: Boolean = false,
2123
@Group("Doc")
2224
@HelpMessage("Control if Scala CLI should use default options for scaladoc, true by default. Use `--default-scaladoc-opts:false` to not include default options.")
25+
@Tag(tags.should)
2326
@ExtraName("defaultScaladocOpts")
2427
defaultScaladocOptions: Option[Boolean] = None,
2528
) extends HasSharedOptions

modules/cli-options/src/main/scala/scala/cli/commands/DoctorOptions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ final case class DoctorOptions(
1313
logging: LoggingOptions = LoggingOptions(),
1414
@Hidden
1515
@HelpMessage(HelpMessages.passwordOption)
16+
@Tag(tags.implementation)
1617
ghToken: Option[PasswordOption] = None
1718
) extends HasLoggingOptions
1819
// format: on

modules/cli-options/src/main/scala/scala/cli/commands/FmtOptions.scala

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,34 @@ final case class FmtOptions(
1212
shared: SharedOptions = SharedOptions(),
1313

1414
@Group("Format")
15+
@Tag(tags.should)
1516
@HelpMessage("Check if sources are well formatted")
1617
check: Boolean = false,
1718

1819
@Group("Format")
20+
@Tag(tags.implementation)
1921
@HelpMessage("Use project filters defined in the configuration. Turned on by default, use `--respect-project-filters:false` to disable it.")
2022
respectProjectFilters: Boolean = true,
2123

2224
@Group("Format")
25+
@Tag(tags.implementation)
2326
@HelpMessage("Saves .scalafmt.conf file if it was created or overwritten")
2427
saveScalafmtConf: Boolean = false,
2528

2629
@Group("Format")
30+
@Tag(tags.implementation)
2731
@Hidden
2832
osArchSuffix: Option[String] = None,
2933
@Group("Format")
34+
@Tag(tags.implementation)
3035
@Hidden
3136
scalafmtTag: Option[String] = None,
3237
@Group("Format")
38+
@Tag(tags.implementation)
3339
@Hidden
3440
scalafmtGithubOrgName: Option[String] = None,
3541
@Group("Format")
42+
@Tag(tags.implementation)
3643
@Hidden
3744
scalafmtExtension: Option[String] = None,
3845
@Group("Format")
@@ -41,22 +48,27 @@ final case class FmtOptions(
4148

4249
@Group("Format")
4350
@Name("F")
51+
@Tag(tags.implementation)
4452
@HelpMessage("Pass argument to scalafmt.")
4553
scalafmtArg: List[String] = Nil,
4654

4755
@Group("Format")
4856
@HelpMessage("Custom path to the scalafmt configuration file.")
57+
@Tag(tags.implementation)
4958
@Name("scalafmtConfig")
5059
scalafmtConf: Option[String] = None,
5160
@Group("Format")
5261
@HelpMessage("Pass configuration as a string.")
5362
@Name("scalafmtConfigStr")
5463
@Name("scalafmtConfSnippet")
5564
scalafmtConfStr: Option[String] = None,
65+
@Tag(tags.implementation)
5666
@Group("Format")
5767
@HelpMessage("Pass a global dialect for scalafmt. This overrides whatever value is configured in the .scalafmt.conf file or inferred based on Scala version used.")
68+
@Tag(tags.implementation)
5869
@Name("dialect")
5970
scalafmtDialect: Option[String] = None,
71+
@Tag(tags.implementation)
6072
@Group("Format")
6173
@HelpMessage(s"Pass scalafmt version before running it (${Constants.defaultScalafmtVersion} by default). If passed, this overrides whatever value is configured in the .scalafmt.conf file.")
6274
@Name("fmtVersion")

modules/cli-options/src/main/scala/scala/cli/commands/HelpGroupOptions.scala

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,26 @@ import com.github.plokhotnyuk.jsoniter_scala.macros.*
99
@HelpMessage("Print help message")
1010
case class HelpGroupOptions(
1111
@HelpMessage("Show options for ScalaJS")
12+
@Tag(tags.implementation)
1213
helpJs: Boolean = false,
1314
@HelpMessage("Show options for ScalaNative")
15+
@Tag(tags.implementation)
1416
helpNative: Boolean = false,
1517
@HelpMessage("Show options for Scaladoc")
1618
@Name("scaladocHelp")
1719
@Name("docHelp")
1820
@Name("helpDoc")
21+
@Tag(tags.implementation)
1922
helpScaladoc: Boolean = false,
2023
@HelpMessage("Show options for Scala REPL")
2124
@Name("replHelp")
25+
@Tag(tags.implementation)
2226
helpRepl: Boolean = false,
2327
@HelpMessage("Show options for Scalafmt")
2428
@Name("scalafmtHelp")
2529
@Name("fmtHelp")
2630
@Name("helpFmt")
31+
@Tag(tags.implementation)
2732
helpScalafmt: Boolean = false
2833
) {
2934

0 commit comments

Comments
 (0)