All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.cli.commands.export0.ExportOptions.scala Maven / Gradle / Ivy

package scala.cli.commands.export0

import caseapp.*

import scala.cli.ScalaCli.fullRunnerName
import scala.cli.commands.shared.{
  HasSharedOptions,
  HelpGroup,
  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(HelpGroup.BuildToolExport.toString)
  @Tag(tags.restricted)
  @Tag(tags.inShortHelp)
  @HelpMessage("Sets the export format to SBT")
    sbt: Option[Boolean] = None,
  @Group(HelpGroup.BuildToolExport.toString)
  @Tag(tags.restricted)
  @Tag(tags.inShortHelp)
  @HelpMessage("Sets the export format to Mill")
    mill: Option[Boolean] = None,
  @Tag(tags.restricted)
  @Tag(tags.inShortHelp)
  @Group(HelpGroup.BuildToolExport.toString)
  @HelpMessage("Sets the export format to Json")
    json: Option[Boolean] = None,

  @Name("setting")
  @Group(HelpGroup.BuildToolExport.toString)
  @Tag(tags.restricted)
    sbtSetting: List[String] = Nil,
  @Name("p")
  @Group(HelpGroup.BuildToolExport.toString)
  @Tag(tags.restricted)
  @HelpMessage("Project name to be used on Mill build file")
    project: Option[String] = None,
  @Group(HelpGroup.BuildToolExport.toString)
  @Tag(tags.restricted)
  @HelpMessage("Version of SBT to be used for the export")
    sbtVersion: Option[String] = None,
  @Name("o")
  @Group(HelpGroup.BuildToolExport.toString)
  @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
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy