Skip to content

Commit 2c10ee0

Browse files
Factor main class options
1 parent c223195 commit 2c10ee0

File tree

5 files changed

+41
-34
lines changed

5 files changed

+41
-34
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package scala.cli.commands
2+
3+
import caseapp._
4+
5+
// format: off
6+
final case class MainClassOptions(
7+
@Group("Entrypoint")
8+
@HelpMessage("Specify which main class to run")
9+
@ValueDescription("main-class")
10+
@Name("M")
11+
mainClass: Option[String] = None
12+
)
13+
// format: on
14+
15+
object MainClassOptions {
16+
implicit val parser = Parser[MainClassOptions]
17+
implicit val help = Help[MainClassOptions]
18+
}

modules/cli/src/main/scala/scala/cli/commands/PackageOptions.scala

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ final case class PackageOptions(
1515
watch: SharedWatchOptions = SharedWatchOptions(),
1616
@Recurse
1717
compileCross: CompileCrossOptions = CompileCrossOptions(),
18+
@Recurse
19+
mainClass: MainClassOptions = MainClassOptions(),
1820

1921
@Group("Package")
2022
@HelpMessage("Set destination path")
@@ -32,11 +34,6 @@ final case class PackageOptions(
3234
@HelpMessage("Generate an assembly JAR")
3335
assembly: Boolean = false,
3436

35-
@Group("Package")
36-
@HelpMessage("Specify which main class to run")
37-
@ValueDescription("main-class")
38-
@Name("M")
39-
mainClass: Option[String] = None,
4037
@Recurse
4138
packager: PackagerOptions = PackagerOptions(),
4239
@Group("Package")
@@ -72,7 +69,7 @@ final case class PackageOptions(
7269
def buildOptions: BuildOptions = {
7370
val baseOptions = shared.buildOptions(enableJmh = false, jmhVersion = None)
7471
baseOptions.copy(
75-
mainClass = mainClass.filter(_.nonEmpty),
72+
mainClass = mainClass.mainClass.filter(_.nonEmpty),
7673
packageOptions = baseOptions.packageOptions.copy(
7774
version = Some(packager.version),
7875
launcherApp = packager.launcherApp,

modules/cli/src/main/scala/scala/cli/commands/RunOptions.scala

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,8 @@ final case class RunOptions(
2222
watch: SharedWatchOptions = SharedWatchOptions(),
2323
@Recurse
2424
compileCross: CompileCrossOptions = CompileCrossOptions(),
25-
26-
@Group("Runner")
27-
@HelpMessage("Specify which main class to run")
28-
@ValueDescription("main-class")
29-
@Name("M")
30-
mainClass: Option[String] = None
25+
@Recurse
26+
mainClass: MainClassOptions = MainClassOptions()
3127
) {
3228
// format: on
3329

@@ -37,7 +33,7 @@ final case class RunOptions(
3733
jmhVersion = benchmarking.jmhVersion
3834
)
3935
baseOptions.copy(
40-
mainClass = mainClass,
36+
mainClass = mainClass.mainClass,
4137
javaOptions = baseOptions.javaOptions.copy(
4238
javaOpts = baseOptions.javaOptions.javaOpts ++ sharedJava.allJavaOpts
4339
)

website/docs/reference/cli-options.md

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,21 @@ Decrease verbosity
328328

329329
Use progress bars
330330

331+
## Main class options
332+
333+
Available in commands:
334+
- [`package`](./commands#package)
335+
- [`run`](./commands#run)
336+
337+
338+
<!-- Automatically generated, DO NOT EDIT MANUALLY -->
339+
340+
#### `--main-class`
341+
342+
Aliases: `-M`
343+
344+
Specify which main class to run
345+
331346
## Metabrowse options
332347

333348
Available in commands:
@@ -392,12 +407,6 @@ Generate a library JAR rather than an executable JAR
392407

393408
Generate an assembly JAR
394409

395-
#### `--main-class`
396-
397-
Aliases: `-M`
398-
399-
Specify which main class to run
400-
401410
#### `--deb`
402411

403412
Build debian package, available only on linux
@@ -552,20 +561,6 @@ Aliases: `-a`
552561

553562
Don't actually run the REPL, only fetch it
554563

555-
## Run options
556-
557-
Available in commands:
558-
- [`run`](./commands#run)
559-
560-
561-
<!-- Automatically generated, DO NOT EDIT MANUALLY -->
562-
563-
#### `--main-class`
564-
565-
Aliases: `-M`
566-
567-
Specify which main class to run
568-
569564
## Scala.JS options
570565

571566
Available in commands:

website/docs/reference/commands.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ Accepts options:
105105
- [dependency](./cli-options.md#dependency-options)
106106
- [jvm](./cli-options.md#jvm-options)
107107
- [logging](./cli-options.md#logging-options)
108+
- [main class](./cli-options.md#main-class-options)
108109
- [package](./cli-options.md#package-options)
109110
- [packager](./cli-options.md#packager-options)
110111
- [Scala.JS](./cli-options.md#scalajs-options)
@@ -129,7 +130,7 @@ Accepts options:
129130
- [java](./cli-options.md#java-options)
130131
- [jvm](./cli-options.md#jvm-options)
131132
- [logging](./cli-options.md#logging-options)
132-
- [run](./cli-options.md#run-options)
133+
- [main class](./cli-options.md#main-class-options)
133134
- [Scala.JS](./cli-options.md#scalajs-options)
134135
- [Scala Native](./cli-options.md#scala-native-options)
135136
- [scalac](./cli-options.md#scalac-options)

0 commit comments

Comments
 (0)