/
ExportOptions.scala
73 lines (67 loc) · 2.3 KB
/
ExportOptions.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package scala.cli.commands.export0
import caseapp.*
import scala.cli.ScalaCli.fullRunnerName
import scala.cli.commands.shared.{HasSharedOptions, HelpMessages, MainClassOptions, SharedOptions}
import scala.cli.commands.tags
// format: off
@HelpMessage(ExportOptions.helpMessage, "", ExportOptions.detailedHelpMessage)
final case class ExportOptions(
// FIXME There might be too many options for 'scala-cli export' there
@Recurse
shared: SharedOptions = SharedOptions(),
@Recurse
mainClass: MainClassOptions = MainClassOptions(),
@Group("Build Tool export")
@Tag(tags.restricted)
@Tag(tags.inShortHelp)
@HelpMessage("Sets the export format to SBT")
sbt: Option[Boolean] = None,
@Group("Build Tool export")
@Tag(tags.restricted)
@Tag(tags.inShortHelp)
@HelpMessage("Sets the export format to Mill")
mill: Option[Boolean] = None,
@Tag(tags.restricted)
@Tag(tags.inShortHelp)
@Group("Build Tool export")
@HelpMessage("Sets the export format to Json")
json: Option[Boolean] = None,
@Name("setting")
@Group("Build Tool export")
@Tag(tags.restricted)
sbtSetting: List[String] = Nil,
@Name("p")
@Group("Build Tool export")
@Tag(tags.restricted)
@HelpMessage("Project name to be used on Mill build file")
project: Option[String] = None,
@Group("Build Tool export")
@Tag(tags.restricted)
@HelpMessage("Version of SBT to be used for the export")
sbtVersion: Option[String] = None,
@Name("o")
@Group("Build Tool export")
@Tag(tags.restricted)
output: Option[String] = None
) extends HasSharedOptions
// format: on
object ExportOptions {
implicit lazy val parser: Parser[ExportOptions] = Parser.derive
implicit lazy val help: Help[ExportOptions] = Help.derive
private val helpHeader =
"Export current project to an external build tool (like SBT or Mill) or to JSON."
val helpMessage: String =
s"""$helpHeader
|
|${HelpMessages.docsWebsiteReference}""".stripMargin
val detailedHelpMessage: String =
s"""$helpHeader
|
|The whole $fullRunnerName project should get exported along with its dependencies configuration.
|
|Unless otherwise configured, the default export format is SBT.
|
|${HelpMessages.acceptedInputs}
|
|${HelpMessages.docsWebsiteReference}""".stripMargin
}