Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Switch to Scala 3-based case-app #1568

Merged
merged 3 commits into from
Nov 17, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions build.sc
Original file line number Diff line number Diff line change
Expand Up @@ -647,9 +647,8 @@ trait CliOptions extends SbtModule with ScalaCliPublishModule {
def compileIvyDeps = super.compileIvyDeps() ++ Seq(
Deps.jsoniterMacros
)
private def scalaVer = Scala.scala213
def scalaVersion = scalaVer
def repositories = super.repositories ++ customRepositories
def scalaVersion = Scala.defaultInternal
def repositories = super.repositories ++ customRepositories

def constantsFile = T.persistent {
val dir = T.dest / "constants"
Expand Down Expand Up @@ -750,6 +749,7 @@ trait Cli extends SbtModule with ProtoBuildModule with CliLaunchers
def repositories = super.repositories ++ customRepositories

def ivyDeps = super.ivyDeps() ++ Agg(
Deps.caseApp,
Deps.coursierLauncher,
Deps.coursierProxySetup,
Deps.coursierPublish.exclude((organization, "config_2.13")),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ final case class BenchmarkingOptions(
// format: on

object BenchmarkingOptions {
lazy val parser: Parser[BenchmarkingOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[BenchmarkingOptions, parser.D] = parser
implicit lazy val help: Help[BenchmarkingOptions] = Help.derive
implicit lazy val parser: Parser[BenchmarkingOptions] = Parser.derive
implicit lazy val help: Help[BenchmarkingOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,4 @@ final case class BloopExitOptions(
object BloopExitOptions {
implicit lazy val parser: Parser[BloopExitOptions] = Parser.derive
implicit lazy val help: Help[BloopExitOptions] = Help.derive
// Parser.Aux for using BloopExitOptions with @Recurse in other options
implicit lazy val parserAux: Parser.Aux[BloopExitOptions, parser.D] = parser
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ final case class CoursierOptions(
// format: on

object CoursierOptions {
lazy val parser: Parser[CoursierOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[CoursierOptions, parser.D] = parser
implicit lazy val help: Help[CoursierOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[CoursierOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[CoursierOptions] = Parser.derive
implicit lazy val help: Help[CoursierOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[CoursierOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ final case class CrossOptions(
// format: on

object CrossOptions {
lazy val parser: Parser[CrossOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[CrossOptions, parser.D] = parser
implicit lazy val help: Help[CrossOptions] = Help.derive
implicit lazy val parser: Parser[CrossOptions] = Parser.derive
implicit lazy val help: Help[CrossOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ final case class DirectoriesOptions(
// format: on

object DirectoriesOptions {
lazy val parser: Parser[DirectoriesOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[DirectoriesOptions, parser.D] = parser
implicit lazy val help: Help[DirectoriesOptions] = Help.derive
implicit lazy val parser: Parser[DirectoriesOptions] = Parser.derive
implicit lazy val help: Help[DirectoriesOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package scala.cli.commands

import caseapp.*
import caseapp.core.help.{Help, HelpFormat}
import caseapp.core.Scala3Helpers.*
import com.github.plokhotnyuk.jsoniter_scala.core.*
import com.github.plokhotnyuk.jsoniter_scala.macros.*

Expand Down Expand Up @@ -40,8 +41,7 @@ case class HelpGroupOptions(
}

object HelpGroupOptions {
lazy val parser: Parser[HelpGroupOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[HelpGroupOptions, parser.D] = parser
implicit lazy val help: Help[HelpGroupOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[HelpGroupOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[HelpGroupOptions] = Parser.derive
implicit lazy val help: Help[HelpGroupOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[HelpGroupOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ final case class LoggingOptions(
}

object LoggingOptions {
lazy val parser: Parser[LoggingOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[LoggingOptions, parser.D] = parser
implicit lazy val help: Help[LoggingOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[LoggingOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[LoggingOptions] = Parser.derive
implicit lazy val help: Help[LoggingOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[LoggingOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ final case class MainClassOptions(
@ValueDescription("main-class")
@Name("M")
mainClass: Option[String] = None,

@Group("Entrypoint")
@HelpMessage("List main classes available in the current context")
@Name("mainClassList")
Expand All @@ -20,7 +20,6 @@ final case class MainClassOptions(
// format: on

object MainClassOptions {
lazy val parser: Parser[MainClassOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[MainClassOptions, parser.D] = parser
implicit lazy val help: Help[MainClassOptions] = Help.derive
implicit lazy val parser: Parser[MainClassOptions] = Parser.derive
implicit lazy val help: Help[MainClassOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ final case class MarkdownOptions(
// format: on

object MarkdownOptions {
lazy val parser: Parser[MarkdownOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[MarkdownOptions, parser.D] = parser
implicit lazy val help: Help[MarkdownOptions] = Help.derive
implicit lazy val parser: Parser[MarkdownOptions] = Parser.derive
implicit lazy val help: Help[MarkdownOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,6 @@ final case class PackagerOptions(
// format: on

object PackagerOptions {
lazy val parser: Parser[PackagerOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[PackagerOptions, parser.D] = parser
implicit lazy val help: Help[PackagerOptions] = Help.derive
implicit lazy val parser: Parser[PackagerOptions] = Parser.derive
implicit lazy val help: Help[PackagerOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,7 @@ final case class ScalaJsOptions(
// format: on

object ScalaJsOptions {
lazy val parser: Parser[ScalaJsOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[ScalaJsOptions, parser.D] = parser
implicit lazy val help: Help[ScalaJsOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[ScalaJsOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[ScalaJsOptions] = Parser.derive
implicit lazy val help: Help[ScalaJsOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[ScalaJsOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ final case class ScalaNativeOptions(
// format: on

object ScalaNativeOptions {
lazy val parser: Parser[ScalaNativeOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[ScalaNativeOptions, parser.D] = parser
implicit lazy val help: Help[ScalaNativeOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[ScalaNativeOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[ScalaNativeOptions] = Parser.derive
implicit lazy val help: Help[ScalaNativeOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[ScalaNativeOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ final case class ScalacExtraOptions(
// format: on

object ScalacExtraOptions {
lazy val parser: Parser[ScalacExtraOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[ScalacExtraOptions, parser.D] = parser
implicit lazy val help: Help[ScalacExtraOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[ScalacExtraOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[ScalacExtraOptions] = Parser.derive
implicit lazy val help: Help[ScalacExtraOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[ScalacExtraOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import caseapp.*
import caseapp.core.{Arg, Error}
import caseapp.core.parser.{Argument, NilParser, StandardArgument}
import caseapp.core.util.Formatter
import caseapp.core.Scala3Helpers.*
import com.github.plokhotnyuk.jsoniter_scala.core.*
import com.github.plokhotnyuk.jsoniter_scala.macros.*

Expand All @@ -21,14 +22,15 @@ final case class ScalacOptions(

object ScalacOptions {

private val scalacOptionsArg = Arg("scalacOption")
.withExtraNames(Seq(Name("scala-opt"), Name("O"), Name("scala-option")))
.withValueDescription(Some(ValueDescription("option")))
.withHelpMessage(Some(HelpMessage(
private val scalacOptionsArg = Arg("scalacOption").copy(
extraNames = Seq(Name("scala-opt"), Name("O"), Name("scala-option")),
valueDescription = Some(ValueDescription("option")),
helpMessage = Some(HelpMessage(
"Add a `scalac` option. Note that options starting with `-g`, `-language`, `-opt`, `-P`, `-target`, `-V`, `-W`, `-X`, and `-Y` are assumed to be Scala compiler options and don't require to be passed after `-O` or `--scalac-option`."
)))
.withGroup(Some(Group("Scala")))
.withOrigin(Some("ScalacOptions"))
)),
group = Some(Group("Scala")),
origin = Some("ScalacOptions")
)
// .withIsFlag(true) // The scalac options we handle accept no value after the -… argument
private val scalacOptionsPurePrefixes =
Set("-V", "-W", "-X", "-Y")
Expand Down Expand Up @@ -93,7 +95,7 @@ object ScalacOptions {
Right(acc.getOrElse(Nil))
}

implicit lazy val parser = {
implicit lazy val parser: Parser[ScalacOptions] = {
val baseParser =
scalacOptionsArgument ::
NilParser
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ final case class SharedBspFileOptions(
// format: on

object SharedBspFileOptions {
lazy val parser: Parser[SharedBspFileOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedBspFileOptions, parser.D] = parser
implicit lazy val help: Help[SharedBspFileOptions] = Help.derive
implicit lazy val parser: Parser[SharedBspFileOptions] = Parser.derive
implicit lazy val help: Help[SharedBspFileOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,7 @@ final case class SharedCompilationServerOptions(
// format: on

object SharedCompilationServerOptions {
lazy val parser: Parser[SharedCompilationServerOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedCompilationServerOptions, parser.D] = parser
implicit lazy val help: Help[SharedCompilationServerOptions] = Help.derive
implicit lazy val parser: Parser[SharedCompilationServerOptions] = Parser.derive
implicit lazy val help: Help[SharedCompilationServerOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedCompilationServerOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,4 @@ final case class SharedDebugOptions(
object SharedDebugOptions {
implicit lazy val parser: Parser[SharedDebugOptions] = Parser.derive
implicit lazy val help: Help[SharedDebugOptions] = Help.derive
// Parser.Aux for using SharedDebugOptions with @Recurse in other options
implicit lazy val parserAux: Parser.Aux[SharedDebugOptions, parser.D] = parser
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@ final case class SharedDependencyOptions(
// format: on

object SharedDependencyOptions {
lazy val parser: Parser[SharedDependencyOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedDependencyOptions, parser.D] = parser
implicit lazy val help: Help[SharedDependencyOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedDependencyOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[SharedDependencyOptions] = Parser.derive
implicit lazy val help: Help[SharedDependencyOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedDependencyOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@ final case class SharedDirectoriesOptions(
// format: on

object SharedDirectoriesOptions {
lazy val parser: Parser[SharedDirectoriesOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedDirectoriesOptions, parser.D] = parser
implicit lazy val help: Help[SharedDirectoriesOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedDirectoriesOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[SharedDirectoriesOptions] = Parser.derive
implicit lazy val help: Help[SharedDirectoriesOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedDirectoriesOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ final case class SharedInputOptions(
// format: on

object SharedInputOptions {
lazy val parser: Parser[SharedInputOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedInputOptions, parser.D] = parser
implicit lazy val help: Help[SharedInputOptions] = Help.derive
implicit lazy val parser: Parser[SharedInputOptions] = Parser.derive
implicit lazy val help: Help[SharedInputOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ final case class SharedJavaOptions(
}

object SharedJavaOptions {
lazy val parser: Parser[SharedJavaOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedJavaOptions, parser.D] = parser
implicit lazy val help: Help[SharedJavaOptions] = Help.derive
implicit lazy val parser: Parser[SharedJavaOptions] = Parser.derive
implicit lazy val help: Help[SharedJavaOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ final case class SharedJvmOptions(
// format: on

object SharedJvmOptions {
lazy val parser: Parser[SharedJvmOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedJvmOptions, parser.D] = parser
implicit lazy val help: Help[SharedJvmOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedJvmOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[SharedJvmOptions] = Parser.derive
implicit lazy val help: Help[SharedJvmOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedJvmOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ final case class SharedPythonOptions(
// format: on

object SharedPythonOptions {
lazy val parser: Parser[SharedPythonOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedPythonOptions, parser.D] = parser
implicit lazy val help: Help[SharedPythonOptions] = Help.derive
implicit lazy val parser: Parser[SharedPythonOptions] = Parser.derive
implicit lazy val help: Help[SharedPythonOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ final case class SharedReplOptions(
compileCross: CrossOptions = CrossOptions(),
@Recurse
sharedPython: SharedPythonOptions = SharedPythonOptions(),

@Group("Repl")
@HelpMessage("[restricted] Use Ammonite (instead of the default Scala REPL)")
@Name("A")
Expand Down Expand Up @@ -43,6 +43,4 @@ final case class SharedReplOptions(
object SharedReplOptions {
implicit lazy val parser: Parser[SharedReplOptions] = Parser.derive
implicit lazy val help: Help[SharedReplOptions] = Help.derive
// Parser.Aux for using SharedReplOptions with @Recurse in other options
implicit lazy val parserAux: Parser.Aux[SharedReplOptions, parser.D] = parser
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,4 @@ final case class SharedRunOptions(
object SharedRunOptions {
implicit lazy val parser: Parser[SharedRunOptions] = Parser.derive
implicit lazy val help: Help[SharedRunOptions] = Help.derive
// Parser.Aux for using SharedRunOptions with @Recurse in other options
implicit lazy val parserAux: Parser.Aux[SharedRunOptions, parser.D] = parser
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,4 @@ final case class SharedUninstallCompletionsOptions(
object SharedUninstallCompletionsOptions {
implicit lazy val parser: Parser[SharedUninstallCompletionsOptions] = Parser.derive
implicit lazy val help: Help[SharedUninstallCompletionsOptions] = Help.derive
// Parser.Aux for using SharedUninstallCompletionsOptions with @Recurse in other options
implicit lazy val parserAux: Parser.Aux[SharedUninstallCompletionsOptions, parser.D] = parser
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ final case class SharedWatchOptions(
}

object SharedWatchOptions {
lazy val parser: Parser[SharedWatchOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedWatchOptions, parser.D] = parser
implicit lazy val help: Help[SharedWatchOptions] = Help.derive
implicit lazy val parser: Parser[SharedWatchOptions] = Parser.derive
implicit lazy val help: Help[SharedWatchOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ final case class SharedWorkspaceOptions(
// format: on

object SharedWorkspaceOptions {
lazy val parser: Parser[SharedWorkspaceOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedWorkspaceOptions, parser.D] = parser
implicit lazy val help: Help[SharedWorkspaceOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedWorkspaceOptions] = JsonCodecMaker.make
implicit lazy val parser: Parser[SharedWorkspaceOptions] = Parser.derive
implicit lazy val help: Help[SharedWorkspaceOptions] = Help.derive
implicit lazy val jsonCodec: JsonValueCodec[SharedWorkspaceOptions] = JsonCodecMaker.make
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,5 @@ final case class SnippetOptions(
object SnippetOptions {
implicit lazy val parser: Parser[SnippetOptions] = Parser.derive
implicit lazy val help: Help[SnippetOptions] = Help.derive
// Parser.Aux for using SnippetOptions with @Recurse in other options
implicit lazy val parserAux: Parser.Aux[SnippetOptions, parser.D] = parser

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@ final case class VerbosityOptions(
}

object VerbosityOptions {
lazy val parser: Parser[VerbosityOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[VerbosityOptions, parser.D] = parser
implicit lazy val help: Help[VerbosityOptions] = Help.derive
implicit lazy val parser: Parser[VerbosityOptions] = Parser.derive
implicit lazy val help: Help[VerbosityOptions] = Help.derive
implicit val rwCounter: JsonValueCodec[Int @@ Counter] =
new JsonValueCodec[Int @@ Counter] {
private val intCodec: JsonValueCodec[Int] = JsonCodecMaker.make
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ final case class SharedSecretOptions(
}

object SharedSecretOptions {
lazy val parser: Parser[SharedSecretOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[SharedSecretOptions, parser.D] = parser
implicit lazy val help: Help[SharedSecretOptions] = Help.derive
implicit lazy val parser: Parser[SharedSecretOptions] = Parser.derive
implicit lazy val help: Help[SharedSecretOptions] = Help.derive
}
Loading