Skip to content

Commit 9c8ce2c

Browse files
authored
Merge pull request #3586 from Gedochao/feature/noop-test-flag
Misc no-op and/or error handling for the `--test` command line flag
2 parents 20296fe + d3a71d0 commit 9c8ce2c

File tree

12 files changed

+53
-11
lines changed

12 files changed

+53
-11
lines changed

modules/cli/src/main/scala/scala/cli/commands/dependencyupdate/DependencyUpdate.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import caseapp.core.help.HelpFormat
55

66
import scala.build.actionable.ActionableDependencyHandler
77
import scala.build.actionable.ActionableDiagnostic.ActionableDependencyUpdateDiagnostic
8+
import scala.build.internals.ConsoleUtils.ScalaCliConsole.warnPrefix
89
import scala.build.options.{BuildOptions, Scope}
910
import scala.build.{CrossSources, Logger, Position, Sources}
1011
import scala.cli.CurrentParams
@@ -24,6 +25,11 @@ object DependencyUpdate extends ScalaCommand[DependencyUpdateOptions] {
2425
args: RemainingArgs,
2526
logger: Logger
2627
): Unit = {
28+
if options.scope.test then
29+
logger.message(
30+
s"""$warnPrefix Including the test scope does not change the behaviour of this command.
31+
|$warnPrefix Test dependencies are updated regardless.""".stripMargin
32+
)
2733
val verbosity = options.shared.logging.verbosity
2834
val buildOptions = buildOptionsOrExit(options)
2935

modules/cli/src/main/scala/scala/cli/commands/dependencyupdate/DependencyUpdateOptions.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package scala.cli.commands.dependencyupdate
33
import caseapp.*
44
import caseapp.core.help.Help
55

6-
import scala.cli.commands.shared.{HasSharedOptions, HelpGroup, SharedOptions}
6+
import scala.cli.commands.shared.{HasSharedOptions, HelpGroup, ScopeOptions, SharedOptions}
77
import scala.cli.commands.tags
88

99
// format: off
@@ -16,6 +16,8 @@ final case class DependencyUpdateOptions(
1616
@Tag(tags.restricted)
1717
@Tag(tags.inShortHelp)
1818
all: Boolean = false,
19+
@Recurse
20+
scope: ScopeOptions = ScopeOptions()
1921
) extends HasSharedOptions
2022
// format: on
2123

modules/cli/src/main/scala/scala/cli/commands/export0/Export.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,14 @@ object Export extends ScalaCommand[ExportOptions] {
136136
override def sharedOptions(opts: ExportOptions): Option[SharedOptions] = Some(opts.shared)
137137

138138
override def runCommand(options: ExportOptions, args: RemainingArgs, logger: Logger): Unit = {
139+
if options.scope.test then {
140+
logger.error(
141+
s"""Including the test scope sources together with the main scope is currently not supported.
142+
|Note that test scope sources will still be exported as per the output build tool tests definition demands.""".stripMargin
143+
)
144+
sys.exit(1)
145+
}
146+
139147
val initialBuildOptions = buildOptionsOrExit(options)
140148

141149
val output = options.output.getOrElse("dest")

modules/cli/src/main/scala/scala/cli/commands/export0/ExportOptions.scala

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import scala.cli.commands.shared.{
88
HelpGroup,
99
HelpMessages,
1010
MainClassOptions,
11+
ScopeOptions,
1112
SharedOptions
1213
}
1314
import scala.cli.commands.tags
@@ -83,7 +84,10 @@ final case class ExportOptions(
8384
@Name("o")
8485
@Group(HelpGroup.BuildToolExport.toString)
8586
@Tag(tags.restricted)
86-
output: Option[String] = None
87+
output: Option[String] = None,
88+
89+
@Recurse
90+
scope: ScopeOptions = ScopeOptions()
8791
) extends HasSharedOptions
8892
// format: on
8993
object ExportOptions {

modules/cli/src/main/scala/scala/cli/commands/fmt/Fmt.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import dependency.*
66

77
import scala.build.input.{Inputs, ProjectScalaFile, Script, SourceScalaFile}
88
import scala.build.internal.{Constants, ExternalBinaryParams, FetchExternalBinary, Runner}
9+
import scala.build.internals.ConsoleUtils.ScalaCliConsole.warnPrefix
910
import scala.build.options.BuildOptions
1011
import scala.build.{Logger, Sources}
1112
import scala.cli.CurrentParams
@@ -42,6 +43,12 @@ object Fmt extends ScalaCommand[FmtOptions] {
4243
override def runCommand(options: FmtOptions, args: RemainingArgs, logger: Logger): Unit = {
4344
val buildOptions = buildOptionsOrExit(options)
4445

46+
if options.scope.test then
47+
logger.message(
48+
s"""$warnPrefix Including the test scope does not change the behaviour of this command.
49+
|$warnPrefix Test scope inputs are formatted, regardless.""".stripMargin
50+
)
51+
4552
// TODO If no input is given, just pass '.' to scalafmt?
4653
val (sourceFiles, workspace, _) =
4754
if args.all.isEmpty then (Seq(os.pwd), os.pwd, None)

modules/cli/src/main/scala/scala/cli/commands/fmt/FmtOptions.scala

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ import scala.build.errors.BuildException
88
import scala.build.internal.FetchExternalBinary
99
import scala.build.options.BuildOptions
1010
import scala.cli.ScalaCli.fullRunnerName
11-
import scala.cli.commands.shared.{HasSharedOptions, HelpGroup, HelpMessages, SharedOptions}
11+
import scala.cli.commands.shared.{
12+
HasSharedOptions,
13+
HelpGroup,
14+
HelpMessages,
15+
ScopeOptions,
16+
SharedOptions
17+
}
1218
import scala.cli.commands.{Constants, tags}
1319
import scala.cli.coursierVersion
1420
import scala.util.Properties
@@ -88,7 +94,9 @@ final case class FmtOptions(
8894
@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.")
8995
@Name("fmtVersion")
9096
@Tag(tags.inShortHelp)
91-
scalafmtVersion: Option[String] = None
97+
scalafmtVersion: Option[String] = None,
98+
@Recurse
99+
scope: ScopeOptions = ScopeOptions()
92100
) extends HasSharedOptions {
93101
// format: on
94102

modules/core/src/main/scala/scala/build/internals/ConsoleUtils.scala

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

66
object ScalaCliConsole {
7-
val GRAY: String = "\u001b[90m"
7+
lazy val warnPrefix = s"[${YELLOW}warn$RESET]"
8+
val GRAY: String = "\u001b[90m"
89
}
910

1011
val ansiFormattingKeys: Set[String] = Set(RESET, BOLD, UNDERLINED, REVERSED, INVISIBLE)

website/docs/reference/cli-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1534,7 +1534,7 @@ Run scalafix rule(s) explicitly, overriding the configuration file default.
15341534

15351535
Available in commands:
15361536

1537-
[`compile`](./commands.md#compile), [`doc`](./commands.md#doc), [`package`](./commands.md#package), [`publish`](./commands.md#publish), [`publish local`](./commands.md#publish-local), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`shebang`](./commands.md#shebang)
1537+
[`compile`](./commands.md#compile), [`dependency-update`](./commands.md#dependency-update), [`doc`](./commands.md#doc), [`export`](./commands.md#export), [`fmt` , `format` , `scalafmt`](./commands.md#fmt), [`package`](./commands.md#package), [`publish`](./commands.md#publish), [`publish local`](./commands.md#publish-local), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`shebang`](./commands.md#shebang)
15381538

15391539
<!-- Automatically generated, DO NOT EDIT MANUALLY -->
15401540

website/docs/reference/commands.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Accepts option groups: [config](./cli-options.md#config-options), [coursier](./c
8080

8181
Update dependency directives in the project
8282

83-
Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [dependency update](./cli-options.md#dependency-update-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options)
83+
Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [dependency update](./cli-options.md#dependency-update-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [scope](./cli-options.md#scope-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options)
8484

8585
## doc
8686

@@ -116,7 +116,7 @@ The `export` sub-command is experimental.
116116
Please bear in mind that non-ideal user experience should be expected.
117117
If you encounter any bugs or have feedback to share, make sure to reach out to the maintenance team at https://github.com/VirtusLab/scala-cli
118118

119-
Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [export](./cli-options.md#export-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options)
119+
Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [export](./cli-options.md#export-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [main class](./cli-options.md#main-class-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [scope](./cli-options.md#scope-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options)
120120

121121
## fix
122122

@@ -159,7 +159,7 @@ All standard Scala CLI inputs are accepted, but only Scala sources will be forma
159159

160160
For detailed documentation refer to our website: https://scala-cli.virtuslab.org/docs/commands/fmt
161161

162-
Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [fmt](./cli-options.md#fmt-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options)
162+
Accepts option groups: [benchmarking](./cli-options.md#benchmarking-options), [compilation server](./cli-options.md#compilation-server-options), [coursier](./cli-options.md#coursier-options), [debug](./cli-options.md#debug-options), [dependency](./cli-options.md#dependency-options), [fmt](./cli-options.md#fmt-options), [global suppress warning](./cli-options.md#global-suppress-warning-options), [help group](./cli-options.md#help-group-options), [input](./cli-options.md#input-options), [jvm](./cli-options.md#jvm-options), [logging](./cli-options.md#logging-options), [markdown](./cli-options.md#markdown-options), [power](./cli-options.md#power-options), [python](./cli-options.md#python-options), [Scala.js](./cli-options.md#scalajs-options), [Scala Native](./cli-options.md#scala-native-options), [scalac](./cli-options.md#scalac-options), [scalac extra](./cli-options.md#scalac-extra-options), [scope](./cli-options.md#scope-options), [semantic db](./cli-options.md#semantic-db-options), [shared](./cli-options.md#shared-options), [snippet](./cli-options.md#snippet-options), [source generator](./cli-options.md#source-generator-options), [suppress warning](./cli-options.md#suppress-warning-options), [verbosity](./cli-options.md#verbosity-options), [version](./cli-options.md#version-options), [workspace](./cli-options.md#workspace-options)
163163

164164
## help
165165

website/docs/reference/scala-command/cli-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,7 @@ Turn verbosity on for scalac. This is an alias for --scalac-option -verbose
978978

979979
Available in commands:
980980

981-
[`compile`](./commands.md#compile), [`doc`](./commands.md#doc), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`shebang`](./commands.md#shebang)
981+
[`compile`](./commands.md#compile), [`doc`](./commands.md#doc), [`fmt` , `format` , `scalafmt`](./commands.md#fmt), [`repl` , `console`](./commands.md#repl), [`run`](./commands.md#run), [`shebang`](./commands.md#shebang)
982982

983983
<!-- Automatically generated, DO NOT EDIT MANUALLY -->
984984

0 commit comments

Comments
 (0)