From 3b3ac13f99f872122d0df3a5af37f351a7d40bf5 Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 25 Oct 2022 10:56:00 +0200 Subject: [PATCH] Enforce for all ScalaCommands to have logging options --- .../scala/cli/commands/AboutOptions.scala | 3 +- .../scala/cli/commands/AddPathOptions.scala | 4 ++- .../scala/cli/commands/BloopExitOptions.scala | 4 ++- .../cli/commands/BloopStartOptions.scala | 4 ++- .../scala/scala/cli/commands/BspOptions.scala | 6 ++-- .../scala/cli/commands/CleanOptions.scala | 4 ++- .../scala/cli/commands/CompileOptions.scala | 4 ++- .../scala/cli/commands/DefaultOptions.scala | 4 ++- .../commands/DependencyUpdateOptions.scala | 4 ++- .../cli/commands/DirectoriesOptions.scala | 4 ++- .../scala/scala/cli/commands/DocOptions.scala | 4 ++- .../scala/cli/commands/DoctorOptions.scala | 3 +- .../scala/cli/commands/ExportOptions.scala | 4 ++- .../scala/scala/cli/commands/FmtOptions.scala | 4 ++- .../scala/cli/commands/HelpOptions.scala | 4 ++- .../commands/InstallCompletionsOptions.scala | 4 ++- .../cli/commands/InstallHomeOptions.scala | 4 ++- .../cli/commands/MetabrowseOptions.scala | 4 ++- .../scala/cli/commands/PackageOptions.scala | 4 ++- .../scala/cli/commands/ReplOptions.scala | 4 ++- .../scala/scala/cli/commands/RunOptions.scala | 4 ++- .../scala/cli/commands/SetupIdeOptions.scala | 4 ++- .../scala/cli/commands/SharedOptions.scala | 4 ++- .../scala/cli/commands/ShebangOptions.scala | 6 +++- .../scala/cli/commands/TestOptions.scala | 4 ++- .../UninstallCompletionsOptions.scala | 4 ++- .../scala/cli/commands/UninstallOptions.scala | 4 ++- .../scala/cli/commands/UpdateOptions.scala | 3 +- .../scala/cli/commands/VersionOptions.scala | 4 ++- .../cli/commands/bloop/BloopOptions.scala | 3 +- .../commands/bloop/BloopOutputOptions.scala | 3 +- .../commands/common/HasLoggingOptions.scala | 7 +++++ .../commands/common/HasSharedOptions.scala | 8 +++++ .../cli/commands/config/ConfigOptions.scala | 3 +- .../commands/default/DefaultFileOptions.scala | 3 +- .../github/HasSharedSecretOptions.scala | 9 ++++++ .../commands/github/SecretCreateOptions.scala | 2 +- .../commands/github/SecretListOptions.scala | 2 +- .../commands/github/SharedSecretOptions.scala | 3 +- .../cli/commands/pgp/PgpExternalOptions.scala | 3 +- .../cli/commands/pgp/PgpPullOptions.scala | 3 +- .../cli/commands/pgp/PgpPushOptions.scala | 3 +- .../publish/PublishLocalOptions.scala | 3 +- .../cli/commands/publish/PublishOptions.scala | 3 +- .../publish/PublishSetupOptions.scala | 3 +- .../main/scala/scala/cli/commands/About.scala | 5 ++-- .../scala/scala/cli/commands/AddPath.scala | 6 ++-- .../scala/scala/cli/commands/BloopExit.scala | 8 ++--- .../scala/scala/cli/commands/BloopStart.scala | 8 ++--- .../main/scala/scala/cli/commands/Bsp.scala | 7 ++--- .../main/scala/scala/cli/commands/Clean.scala | 7 ++--- .../scala/scala/cli/commands/Compile.scala | 5 ++-- .../scala/scala/cli/commands/Default.scala | 7 +++-- .../scala/cli/commands/DependencyUpdate.scala | 7 +++-- .../scala/cli/commands/Directories.scala | 10 ++++--- .../main/scala/scala/cli/commands/Doc.scala | 3 +- .../scala/scala/cli/commands/Doctor.scala | 2 +- .../scala/scala/cli/commands/Export.scala | 3 +- .../main/scala/scala/cli/commands/Fmt.scala | 3 +- .../scala/scala/cli/commands/HelpCmd.scala | 3 +- .../cli/commands/InstallCompletions.scala | 12 ++++---- .../scala/cli/commands/InstallHome.scala | 10 +++---- .../scala/scala/cli/commands/Metabrowse.scala | 3 +- .../scala/scala/cli/commands/Package.scala | 3 +- .../main/scala/scala/cli/commands/Repl.scala | 3 +- .../main/scala/scala/cli/commands/Run.scala | 13 +++++---- .../scala/cli/commands/ScalaCommand.scala | 29 +++++-------------- .../scala/scala/cli/commands/SetupIde.scala | 3 +- .../scala/scala/cli/commands/Shebang.scala | 8 +++-- .../main/scala/scala/cli/commands/Test.scala | 3 +- .../scala/scala/cli/commands/Uninstall.scala | 6 ++-- .../cli/commands/UninstallCompletions.scala | 12 ++++---- .../scala/scala/cli/commands/Update.scala | 11 +++---- .../scala/scala/cli/commands/Version.scala | 5 ++-- .../scala/cli/commands/bloop/Bloop.scala | 5 +--- .../cli/commands/bloop/BloopOutput.scala | 6 ++-- .../scala/cli/commands/config/Config.scala | 5 ++-- .../cli/commands/default/DefaultFile.scala | 9 +++--- .../cli/commands/github/SecretCreate.scala | 9 +++--- .../cli/commands/github/SecretList.scala | 9 +++--- .../scala/cli/commands/pgp/PgpPull.scala | 5 ++-- .../scala/cli/commands/pgp/PgpPush.scala | 5 ++-- .../scala/cli/commands/publish/Publish.scala | 3 +- .../cli/commands/publish/PublishLocal.scala | 9 ++++-- .../cli/commands/publish/PublishSetup.scala | 16 +++++----- 85 files changed, 264 insertions(+), 200 deletions(-) create mode 100644 modules/cli-options/src/main/scala/scala/cli/commands/common/HasLoggingOptions.scala create mode 100644 modules/cli-options/src/main/scala/scala/cli/commands/common/HasSharedOptions.scala create mode 100644 modules/cli-options/src/main/scala/scala/cli/commands/github/HasSharedSecretOptions.scala diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/AboutOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/AboutOptions.scala index 594a458250..1c7719d5da 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/AboutOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/AboutOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.signing.shared.PasswordOption import scala.cli.signing.util.ArgParsers._ @@ -13,7 +14,7 @@ final case class AboutOptions( @Hidden @HelpMessage(HelpMessages.passwordOption) ghToken: Option[PasswordOption] = None -) +) extends HasLoggingOptions // format: on diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/AddPathOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/AddPathOptions.scala index 0c3e2bc87d..a6576fec93 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/AddPathOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/AddPathOptions.scala @@ -2,12 +2,14 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off final case class AddPathOptions( @Recurse logging: LoggingOptions = LoggingOptions(), title: String = "" -) +) extends HasLoggingOptions // format: on object AddPathOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/BloopExitOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/BloopExitOptions.scala index 07d27ee559..5640b1abc7 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/BloopExitOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/BloopExitOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off final case class BloopExitOptions( @@ -13,7 +15,7 @@ final case class BloopExitOptions( directories: SharedDirectoriesOptions = SharedDirectoriesOptions(), @Recurse coursier: CoursierOptions = CoursierOptions() -) +) extends HasLoggingOptions // format: on object BloopExitOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/BloopStartOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/BloopStartOptions.scala index 8ef0990916..393dc31274 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/BloopStartOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/BloopStartOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off final case class BloopStartOptions( @Recurse @@ -16,7 +18,7 @@ final case class BloopStartOptions( coursier: CoursierOptions = CoursierOptions(), @Name("f") force: Boolean = false -) +) extends HasLoggingOptions // format: on object BloopStartOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/BspOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/BspOptions.scala index 2e9b6d6e6d..6de4ce574b 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/BspOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/BspOptions.scala @@ -2,18 +2,20 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Start BSP server") final case class BspOptions( // FIXME There might be too many options in SharedOptions for the bsp command… @Recurse shared: SharedOptions = SharedOptions(), - + @HelpMessage("Command-line options JSON file") @ValueDescription("path") @Hidden jsonOptions: Option[String] = None -) { +) extends HasSharedOptions { // format: on } diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/CleanOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/CleanOptions.scala index e75aa7a901..234378ba06 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/CleanOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/CleanOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Clean the workspace") final case class CleanOptions( @@ -13,7 +15,7 @@ final case class CleanOptions( bspFile: SharedBspFileOptions = SharedBspFileOptions(), @Recurse workspace: SharedWorkspaceOptions = SharedWorkspaceOptions() -) +) extends HasLoggingOptions // format: on object CleanOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/CompileOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/CompileOptions.scala index 9741fd0b8b..4ff2045060 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/CompileOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/CompileOptions.scala @@ -3,6 +3,8 @@ package scala.cli.commands import caseapp._ import caseapp.core.help.Help +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Compile Scala code") final case class CompileOptions( @@ -20,7 +22,7 @@ final case class CompileOptions( @HelpMessage("Compile test scope") test: Boolean = false -) +) extends HasSharedOptions // format: on object CompileOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/DefaultOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/DefaultOptions.scala index 8d22e16d5e..31241859c1 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/DefaultOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/DefaultOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off case class DefaultOptions( @Recurse @@ -12,7 +14,7 @@ case class DefaultOptions( sharedRepl: SharedReplOptions = SharedReplOptions(), @Name("-version") version: Boolean = false -) +) extends HasSharedOptions // format: on object DefaultOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/DependencyUpdateOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/DependencyUpdateOptions.scala index c0fe8b5fa0..27b773523a 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/DependencyUpdateOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/DependencyUpdateOptions.scala @@ -3,6 +3,8 @@ package scala.cli.commands import caseapp._ import caseapp.core.help.Help +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Update dependencies in project") final case class DependencyUpdateOptions( @@ -11,7 +13,7 @@ final case class DependencyUpdateOptions( @Group("DependencyUpdate") @HelpMessage("Update all dependencies if newer version was released") all: Boolean = false, -) +) extends HasSharedOptions // format: on object DependencyUpdateOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/DirectoriesOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/DirectoriesOptions.scala index b40c91beb3..31df63fd7e 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/DirectoriesOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/DirectoriesOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Prints directories used by `scala-cli`") final case class DirectoriesOptions( @@ -9,7 +11,7 @@ final case class DirectoriesOptions( directories: SharedDirectoriesOptions = SharedDirectoriesOptions(), @Recurse logging: LoggingOptions = LoggingOptions() -) +) extends HasLoggingOptions // format: on object DirectoriesOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/DocOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/DocOptions.scala index 2e090e50c6..fdfa18e653 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/DocOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/DocOptions.scala @@ -3,6 +3,8 @@ package scala.cli.commands import caseapp._ import caseapp.core.help.Help +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Generate Scaladoc documentation", "By default, Scala CLI sets common scaladoc options and this mechanism can be disabled by using `--default-scaladoc-opts:false`.") final case class DocOptions( @@ -20,7 +22,7 @@ final case class DocOptions( @HelpMessage("Control if scala CLI should use default options for scaladoc, true by default. Use `--default-scaladoc-opts:false` to not include default options.") @ExtraName("defaultScaladocOpts") defaultScaladocOptions: Option[Boolean] = None, -) +) extends HasSharedOptions // format: on object DocOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/DoctorOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/DoctorOptions.scala index d427b3692f..0ac5445098 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/DoctorOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/DoctorOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.signing.shared.PasswordOption import scala.cli.signing.util.ArgParsers._ @@ -13,7 +14,7 @@ final case class DoctorOptions( @Hidden @HelpMessage(HelpMessages.passwordOption) ghToken: Option[PasswordOption] = None -) +) extends HasLoggingOptions // format: on object DoctorOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/ExportOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/ExportOptions.scala index 947d1db8bb..0ad954ef52 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/ExportOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/ExportOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Export current project to sbt or Mill") final case class ExportOptions( @@ -24,7 +26,7 @@ final case class ExportOptions( @Name("o") @Group("Build Tool export options") output: Option[String] = None -) +) extends HasSharedOptions // format: on object ExportOptions { implicit lazy val parser: Parser[ExportOptions] = Parser.derive diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/FmtOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/FmtOptions.scala index 820d51aef8..0779d28017 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/FmtOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/FmtOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Format Scala code") final case class FmtOptions( @@ -58,7 +60,7 @@ final case class FmtOptions( @HelpMessage("Pass scalafmt version before running it. This overrides whatever value is configured in the .scalafmt.conf file.") @Name("fmtVersion") scalafmtVersion: Option[String] = None -) +) extends HasSharedOptions // format: on object FmtOptions { implicit lazy val parser: Parser[FmtOptions] = Parser.derive diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/HelpOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/HelpOptions.scala index d5fe87690b..aaaab314f7 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/HelpOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/HelpOptions.scala @@ -2,12 +2,14 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Print help message") case class HelpOptions( @Recurse logging: LoggingOptions = LoggingOptions() -) +) extends HasLoggingOptions // format: on object HelpOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/InstallCompletionsOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/InstallCompletionsOptions.scala index d3f8265c97..8756f78fc8 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/InstallCompletionsOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/InstallCompletionsOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Installs completions into your shell") final case class InstallCompletionsOptions( @@ -31,7 +33,7 @@ final case class InstallCompletionsOptions( @HelpMessage("Print completions to stdout") env: Boolean = false, -) +) extends HasLoggingOptions // format: on object InstallCompletionsOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/InstallHomeOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/InstallHomeOptions.scala index beeeb9c569..8654ddffcf 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/InstallHomeOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/InstallHomeOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Install `scala-cli` in a sub-directory of the home directory") final case class InstallHomeOptions( @@ -21,7 +23,7 @@ final case class InstallHomeOptions( @Hidden @HelpMessage("Binary directory") binDir: Option[String] = None -) { +) extends HasLoggingOptions { // format: on lazy val binDirPath = binDir.map(os.Path(_, os.pwd)) } diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/MetabrowseOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/MetabrowseOptions.scala index a8472a9536..a8d7ca0f99 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/MetabrowseOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/MetabrowseOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Browse Scala code and its dependencies in the browser") final case class MetabrowseOptions( @@ -32,7 +34,7 @@ final case class MetabrowseOptions( metabrowseLauncher: Option[String] = None, @Hidden metabrowseDialect: Option[String] = None -) { +) extends HasSharedOptions { // format: on } diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/PackageOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/PackageOptions.scala index 1522902c46..52b3562c3f 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/PackageOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/PackageOptions.scala @@ -3,6 +3,8 @@ package scala.cli.commands import caseapp._ import caseapp.core.help.Help +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Compile and package Scala code") final case class PackageOptions( @@ -90,7 +92,7 @@ final case class PackageOptions( @HelpMessage("Build GraalVM native image") @ExtraName("graal") nativeImage: Boolean = false -) +) extends HasSharedOptions // format: on object PackageOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/ReplOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/ReplOptions.scala index 699c73b7c0..b6520eeda7 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/ReplOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/ReplOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Fire-up a Scala REPL") final case class ReplOptions( @@ -9,7 +11,7 @@ final case class ReplOptions( shared: SharedOptions = SharedOptions(), @Recurse sharedRepl: SharedReplOptions = SharedReplOptions() -) +) extends HasSharedOptions // format: on object ReplOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/RunOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/RunOptions.scala index 2286f0f67d..e5dbc31d94 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/RunOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/RunOptions.scala @@ -3,6 +3,8 @@ package scala.cli.commands import caseapp._ import caseapp.core.help.Help +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("""|Compile and run Scala code. | @@ -16,7 +18,7 @@ final case class RunOptions( shared: SharedOptions = SharedOptions(), @Recurse sharedRun: SharedRunOptions = SharedRunOptions() -) +) extends HasSharedOptions // format: on object RunOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/SetupIdeOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/SetupIdeOptions.scala index 5d8b044daa..7fd553520c 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/SetupIdeOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/SetupIdeOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Generate a BSP file that you can import into your IDE") final case class SetupIdeOptions( @@ -11,7 +13,7 @@ final case class SetupIdeOptions( bspFile: SharedBspFileOptions = SharedBspFileOptions(), @Hidden charset: Option[String] = None -) +) extends HasSharedOptions // format: on object SetupIdeOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/SharedOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/SharedOptions.scala index 185ed868e9..a3cc094f0d 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/SharedOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/SharedOptions.scala @@ -5,6 +5,8 @@ import caseapp.core.help.Help import com.github.plokhotnyuk.jsoniter_scala.core._ import com.github.plokhotnyuk.jsoniter_scala.macros._ +import scala.cli.commands.common.HasLoggingOptions + // format: off final case class SharedOptions( @Recurse @@ -129,7 +131,7 @@ final case class SharedOptions( @HelpMessage("Copy compilation results to output directory using either relative or absolute path") @ValueDescription("/example/path") compilationOutput: Option[String] = None, -) +) extends HasLoggingOptions // format: on object SharedOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/ShebangOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/ShebangOptions.scala index 3b3d84f668..c9c103c621 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/ShebangOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/ShebangOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasSharedOptions + @HelpMessage( """|Like `run`, but more handy from shebang scripts | @@ -32,7 +34,9 @@ import caseapp._ final case class ShebangOptions( @Recurse runOptions: RunOptions = RunOptions() -) +) extends HasSharedOptions { + override def shared: SharedOptions = runOptions.shared +} object ShebangOptions { implicit lazy val parser: Parser[ShebangOptions] = Parser.derive diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/TestOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/TestOptions.scala index 379d8ceb8e..1829637824 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/TestOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/TestOptions.scala @@ -3,6 +3,8 @@ package scala.cli.commands import caseapp._ import caseapp.core.help.Help +import scala.cli.commands.common.HasSharedOptions + // format: off @HelpMessage("Compile and test Scala code") final case class TestOptions( @@ -23,7 +25,7 @@ final case class TestOptions( @Group("Test") @HelpMessage("Fail if no test suites were run") requireTests: Boolean = false -) +) extends HasSharedOptions // format: on object TestOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/UninstallCompletionsOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/UninstallCompletionsOptions.scala index cec878a9d6..a0f6501c84 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/UninstallCompletionsOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/UninstallCompletionsOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Uninstalls completions from your shell") final case class UninstallCompletionsOptions( @@ -9,7 +11,7 @@ final case class UninstallCompletionsOptions( shared: SharedUninstallCompletionsOptions = SharedUninstallCompletionsOptions(), @Recurse logging: LoggingOptions = LoggingOptions() -) +) extends HasLoggingOptions // format: on object UninstallCompletionsOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/UninstallOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/UninstallOptions.scala index 366cffeb64..dfee4bdcc7 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/UninstallOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/UninstallOptions.scala @@ -3,6 +3,7 @@ package scala.cli.commands import caseapp._ import java.nio.file.Path +import scala.cli.commands.common.HasLoggingOptions // format: off @HelpMessage("Uninstall scala-cli - only works when installed by the installation script") @@ -24,7 +25,8 @@ final case class UninstallOptions( @Hidden @HelpMessage("Binary directory") binDir: Option[String] = None -) { +) extends HasLoggingOptions { + override def logging: LoggingOptions = bloopExit.logging // format: on lazy val binDirPath = binDir.map(os.Path(_, os.pwd)) } diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/UpdateOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/UpdateOptions.scala index a827af44ed..c83d2922b4 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/UpdateOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/UpdateOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.signing.shared.PasswordOption import scala.cli.signing.util.ArgParsers._ @@ -26,7 +27,7 @@ final case class UpdateOptions( @Hidden @HelpMessage(HelpMessages.passwordOption) ghToken: Option[PasswordOption] = None -) +) extends HasLoggingOptions // format: on object UpdateOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/VersionOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/VersionOptions.scala index 451d8ddea8..67a1468513 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/VersionOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/VersionOptions.scala @@ -2,6 +2,8 @@ package scala.cli.commands import caseapp._ +import scala.cli.commands.common.HasLoggingOptions + // format: off @HelpMessage("Print `scala-cli` version") final case class VersionOptions( @@ -13,7 +15,7 @@ final case class VersionOptions( @HelpMessage("Show only plain scala version") @Name("scala") scalaVersion: Boolean = false -) +) extends HasLoggingOptions // format: on object VersionOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOptions.scala index 7a6fc0387e..6115964ab2 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.bloop import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.commands.{CoursierOptions, LoggingOptions, SharedCompilationServerOptions, SharedDirectoriesOptions, SharedJvmOptions} // format: off @@ -20,7 +21,7 @@ final case class BloopOptions( @ExtraName("workingDir") @ExtraName("dir") workingDirectory: Option[String] = None -) { +) extends HasLoggingOptions { // format: on def workDirOpt: Option[os.Path] = diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOutputOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOutputOptions.scala index 3800728b02..e6d04b78b1 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOutputOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/bloop/BloopOutputOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.bloop import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.commands.{LoggingOptions, SharedCompilationServerOptions, SharedDirectoriesOptions} // format: off @@ -12,7 +13,7 @@ final case class BloopOutputOptions( compilationServer: SharedCompilationServerOptions = SharedCompilationServerOptions(), @Recurse directories: SharedDirectoriesOptions = SharedDirectoriesOptions() -) +) extends HasLoggingOptions // format: on object BloopOutputOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/common/HasLoggingOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/common/HasLoggingOptions.scala new file mode 100644 index 0000000000..33d9a67c23 --- /dev/null +++ b/modules/cli-options/src/main/scala/scala/cli/commands/common/HasLoggingOptions.scala @@ -0,0 +1,7 @@ +package scala.cli.commands.common + +import scala.cli.commands.LoggingOptions + +trait HasLoggingOptions { + def logging: LoggingOptions +} diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/common/HasSharedOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/common/HasSharedOptions.scala new file mode 100644 index 0000000000..7310577edf --- /dev/null +++ b/modules/cli-options/src/main/scala/scala/cli/commands/common/HasSharedOptions.scala @@ -0,0 +1,8 @@ +package scala.cli.commands.common + +import scala.cli.commands.{LoggingOptions, SharedOptions} + +trait HasSharedOptions extends HasLoggingOptions { + def shared: SharedOptions + override def logging: LoggingOptions = shared.logging +} diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/config/ConfigOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/config/ConfigOptions.scala index bca1e20bf4..c45121807f 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/config/ConfigOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/config/ConfigOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.config import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.commands.{ CoursierOptions, LoggingOptions, @@ -52,7 +53,7 @@ final case class ConfigOptions( @Group("Config") @HelpMessage("For repository.credentials, whether to use these credentials should be passed upon redirection") passOnRedirect: Option[Boolean] = None -) +) extends HasLoggingOptions // format: on object ConfigOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/default/DefaultFileOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/default/DefaultFileOptions.scala index 993e7b2711..163e0bb3a1 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/default/DefaultFileOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/default/DefaultFileOptions.scala @@ -3,6 +3,7 @@ package scala.cli.commands.default import caseapp._ import scala.cli.commands.LoggingOptions +import scala.cli.commands.common.HasLoggingOptions // format: off final case class DefaultFileOptions( @@ -21,7 +22,7 @@ final case class DefaultFileOptions( @HelpMessage("Force overwriting destination files") @ExtraName("f") force: Boolean = false -) +) extends HasLoggingOptions // format: on object DefaultFileOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/github/HasSharedSecretOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/github/HasSharedSecretOptions.scala new file mode 100644 index 0000000000..1b0f04512a --- /dev/null +++ b/modules/cli-options/src/main/scala/scala/cli/commands/github/HasSharedSecretOptions.scala @@ -0,0 +1,9 @@ +package scala.cli.commands.github + +import scala.cli.commands.LoggingOptions +import scala.cli.commands.common.HasLoggingOptions + +trait HasSharedSecretOptions extends HasLoggingOptions { + def shared: SharedSecretOptions + override def logging: LoggingOptions = shared.logging +} diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretCreateOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretCreateOptions.scala index 258e439412..0b40c05778 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretCreateOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretCreateOptions.scala @@ -16,7 +16,7 @@ final case class SecretCreateOptions( dummy: Boolean = false, @Hidden printRequest: Boolean = false -) +) extends HasSharedSecretOptions // format: on object SecretCreateOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretListOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretListOptions.scala index f4fae4da98..004cc57655 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretListOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/github/SecretListOptions.scala @@ -6,7 +6,7 @@ import caseapp._ final case class ListSecretsOptions( @Recurse shared: SharedSecretOptions -) +) extends HasSharedSecretOptions // format: on object ListSecretsOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/github/SharedSecretOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/github/SharedSecretOptions.scala index 67cad68e2b..1e96b61561 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/github/SharedSecretOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/github/SharedSecretOptions.scala @@ -5,6 +5,7 @@ import caseapp._ import scala.cli.signing.shared.PasswordOption import scala.cli.signing.util.ArgParsers._ import scala.cli.commands.LoggingOptions +import scala.cli.commands.common.HasLoggingOptions import scala.cli.signing.shared.Secret // format: off @@ -14,7 +15,7 @@ final case class SharedSecretOptions( token: PasswordOption = PasswordOption.Value(Secret("")), @ExtraName("repo") repository: String = "" -) { +) extends HasLoggingOptions { // format: on lazy val (repoOrg, repoName) = diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpExternalOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpExternalOptions.scala index cf45641d71..57d63726a4 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpExternalOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpExternalOptions.scala @@ -4,6 +4,7 @@ import caseapp._ import scala.cli.commands.{CoursierOptions, LoggingOptions} import scala.cli.commands.SharedJvmOptions +import scala.cli.commands.common.HasLoggingOptions // format: off final case class PgpExternalOptions( @@ -15,7 +16,7 @@ final case class PgpExternalOptions( coursier: CoursierOptions = CoursierOptions(), @Hidden signingCliVersion: Option[String] = None -) +) extends HasLoggingOptions // format: on object PgpExternalOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPullOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPullOptions.scala index 0346870da4..92ba7f87e4 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPullOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPullOptions.scala @@ -3,6 +3,7 @@ package scala.cli.commands.pgp import caseapp._ import scala.cli.commands.LoggingOptions +import scala.cli.commands.common.HasLoggingOptions // format: off final case class PgpPullOptions( @@ -13,7 +14,7 @@ final case class PgpPullOptions( @Group("PGP") @HelpMessage("Whether to exit with code 0 if no key is passed") allowEmpty: Boolean = false -) +) extends HasLoggingOptions // format: on object PgpPullOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPushOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPushOptions.scala index d633b0fece..bf2aa145ae 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPushOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/pgp/PgpPushOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.pgp import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.commands.{CoursierOptions, LoggingOptions, SharedJvmOptions} // format: off @@ -25,7 +26,7 @@ final case class PgpPushOptions( @Group("PGP") @Hidden forceSigningBinary: Boolean = false -) +) extends HasLoggingOptions // format: on object PgpPushOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishLocalOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishLocalOptions.scala index fa262cf95c..e31ab745b1 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishLocalOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishLocalOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.publish import caseapp._ +import scala.cli.commands.common.HasSharedOptions import scala.cli.commands.{ CrossOptions, MainClassOptions, @@ -26,7 +27,7 @@ final case class PublishLocalOptions( sharedPublish: SharedPublishOptions = SharedPublishOptions(), @Recurse sharedPython: SharedPythonOptions = SharedPythonOptions() -) +) extends HasSharedOptions // format: on object PublishLocalOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishOptions.scala index f7c76cb721..d619edb1fa 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.publish import caseapp._ +import scala.cli.commands.common.HasSharedOptions import scala.cli.commands.{ CrossOptions, MainClassOptions, @@ -37,7 +38,7 @@ final case class PublishOptions( @Group("Publishing") @Hidden parallelUpload: Option[Boolean] = None -) +) extends HasSharedOptions // format: on object PublishOptions { diff --git a/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishSetupOptions.scala b/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishSetupOptions.scala index 54d4feda73..dda5711d11 100644 --- a/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishSetupOptions.scala +++ b/modules/cli-options/src/main/scala/scala/cli/commands/publish/PublishSetupOptions.scala @@ -2,6 +2,7 @@ package scala.cli.commands.publish import caseapp._ +import scala.cli.commands.common.HasLoggingOptions import scala.cli.commands.pgp.SharedPgpPushPullOptions import scala.cli.commands.{ CoursierOptions, @@ -60,7 +61,7 @@ final case class PublishSetupOptions( @Group("Publishing") @HelpMessage("Dummy mode - don't upload any secret to GitHub") dummy: Boolean = false -) +) extends HasLoggingOptions // format: on object PublishSetupOptions { diff --git a/modules/cli/src/main/scala/scala/cli/commands/About.scala b/modules/cli/src/main/scala/scala/cli/commands/About.scala index 3600223983..3a675f7853 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/About.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/About.scala @@ -2,6 +2,7 @@ package scala.cli.commands import caseapp.* +import scala.build.Logger import scala.build.internal.Constants import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* @@ -9,9 +10,7 @@ import scala.cli.commands.util.CommonOps.* class About(isSipScala: Boolean) extends ScalaCommand[AboutOptions] { override def group = "Miscellaneous" - override def loggingOptions(options: AboutOptions): Option[LoggingOptions] = Some(options.logging) - override def runCommand(options: AboutOptions, args: RemainingArgs): Unit = { - val logger = options.logging.logger + override def runCommand(options: AboutOptions, args: RemainingArgs, logger: Logger): Unit = { println(Version.versionInfo(isSipScala)) val newestScalaCliVersion = Update.newestScalaCliVersion(options.ghToken.map(_.get())) val isOutdated = CommandUtils.isOutOfDateVersion(newestScalaCliVersion, Constants.version) diff --git a/modules/cli/src/main/scala/scala/cli/commands/AddPath.scala b/modules/cli/src/main/scala/scala/cli/commands/AddPath.scala index 2940220475..f3a4c53a46 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/AddPath.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/AddPath.scala @@ -5,6 +5,7 @@ import coursier.env.{EnvironmentUpdate, ProfileUpdater} import java.io.File +import scala.build.Logger import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* import scala.util.Properties @@ -12,10 +13,7 @@ import scala.util.Properties object AddPath extends ScalaCommand[AddPathOptions] { override def hidden = true override def isRestricted = true - override def loggingOptions(options: AddPathOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: AddPathOptions, args: RemainingArgs): Unit = { - val logger = options.logging.logger + override def runCommand(options: AddPathOptions, args: RemainingArgs, logger: Logger): Unit = { if args.all.isEmpty then logger.error("Nothing to do") else { val update = EnvironmentUpdate(Nil, Seq("PATH" -> args.all.mkString(File.pathSeparator))) diff --git a/modules/cli/src/main/scala/scala/cli/commands/BloopExit.scala b/modules/cli/src/main/scala/scala/cli/commands/BloopExit.scala index 3c5e74a56d..b534f9883d 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/BloopExit.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/BloopExit.scala @@ -2,8 +2,8 @@ package scala.cli.commands import caseapp.* -import scala.build.Os import scala.build.blooprifle.{BloopRifle, BloopRifleConfig} +import scala.build.{Logger, Os} import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* import scala.cli.commands.util.SharedCompilationServerOptionsUtil.* @@ -26,12 +26,8 @@ object BloopExit extends ScalaCommand[BloopExitOptions] { ) } - override def loggingOptions(options: BloopExitOptions): Option[LoggingOptions] = - Some(options.logging) - - override def runCommand(options: BloopExitOptions, args: RemainingArgs): Unit = { + override def runCommand(options: BloopExitOptions, args: RemainingArgs, logger: Logger): Unit = { val bloopRifleConfig = mkBloopRifleConfig(options) - val logger = options.logging.logger val isRunning = BloopRifle.check(bloopRifleConfig, logger.bloopRifleLogger) diff --git a/modules/cli/src/main/scala/scala/cli/commands/BloopStart.scala b/modules/cli/src/main/scala/scala/cli/commands/BloopStart.scala index 7fc688d66c..3ec80dd6cb 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/BloopStart.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/BloopStart.scala @@ -2,11 +2,11 @@ package scala.cli.commands import caseapp.* -import scala.build.Os import scala.build.bloop.BloopThreads import scala.build.blooprifle.internal.Constants import scala.build.blooprifle.{BloopRifle, BloopRifleConfig} import scala.build.options.{BuildOptions, InternalOptions} +import scala.build.{Logger, Os} import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* import scala.cli.commands.util.JvmUtils @@ -39,13 +39,9 @@ object BloopStart extends ScalaCommand[BloopStartOptions] { ) } - override def loggingOptions(options: BloopStartOptions): Option[LoggingOptions] = - Some(options.logging) - - override def runCommand(options: BloopStartOptions, args: RemainingArgs): Unit = { + override def runCommand(options: BloopStartOptions, args: RemainingArgs, logger: Logger): Unit = { val threads = BloopThreads.create() val bloopRifleConfig = mkBloopRifleConfig(options) - val logger = options.logging.logger val isRunning = BloopRifle.check(bloopRifleConfig, logger.bloopRifleLogger) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Bsp.scala b/modules/cli/src/main/scala/scala/cli/commands/Bsp.scala index 4766c19c09..fa7e05ebe1 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Bsp.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Bsp.scala @@ -28,7 +28,7 @@ object Bsp extends ScalaCommand[BspOptions] { Option(latestSharedOptions(options)) // not reusing buildOptions here, since they should be reloaded live instead - override def runCommand(options: BspOptions, args: RemainingArgs): Unit = { + override def runCommand(options: BspOptions, args: RemainingArgs, logger: Logger): Unit = { if (options.shared.logging.verbosity >= 3) pprint.err.log(args) @@ -44,8 +44,8 @@ object Bsp extends ScalaCommand[BspOptions] { pprint.err.log(initialInputs) val buildOptions0 = buildOptions(sharedOptions) - val logger = sharedOptions.logging.logger - val persistentLogger = new PersistentDiagnosticLogger(logger) + val latestLogger = sharedOptions.logging.logger + val persistentLogger = new PersistentDiagnosticLogger(latestLogger) val allInputs = CrossSources.forInputs( @@ -72,7 +72,6 @@ object Bsp extends ScalaCommand[BspOptions] { ) } - val logger = getSharedOptions().logging.logger val inputs = argsToInputs(args.all).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) val configDb = options.shared.configDb diff --git a/modules/cli/src/main/scala/scala/cli/commands/Clean.scala b/modules/cli/src/main/scala/scala/cli/commands/Clean.scala index 11158a5251..864a719b00 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Clean.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Clean.scala @@ -3,15 +3,13 @@ package scala.cli.commands import caseapp.* import scala.build.internal.Constants -import scala.build.{Inputs, Os} +import scala.build.{Inputs, Logger, Os} import scala.cli.commands.util.CommonOps.* import scala.cli.{CurrentParams, ScalaCli} object Clean extends ScalaCommand[CleanOptions] { override def group = "Main" - override def loggingOptions(options: CleanOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: CleanOptions, args: RemainingArgs): Unit = { + override def runCommand(options: CleanOptions, args: RemainingArgs, logger: Logger): Unit = { val inputs = Inputs( args.all, Os.pwd, @@ -30,7 +28,6 @@ object Clean extends ScalaCommand[CleanOptions] { val workDir = inputs.workspace / Constants.workspaceDirName val (_, bspEntry) = SetupIde.bspDetails(inputs.workspace, options.bspFile) - val logger = options.logging.logger if (os.exists(workDir)) { logger.debug(s"Working directory: $workDir") if (os.isDir(workDir)) { diff --git a/modules/cli/src/main/scala/scala/cli/commands/Compile.scala b/modules/cli/src/main/scala/scala/cli/commands/Compile.scala index 1d7c017c8e..90aa8137f0 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Compile.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Compile.scala @@ -5,7 +5,7 @@ import caseapp.* import java.io.File import scala.build.options.{BuildOptions, Scope} -import scala.build.{Build, BuildThreads, Builds, Os} +import scala.build.{Build, BuildThreads, Builds, Logger, Os} import scala.cli.CurrentParams import scala.cli.commands.publish.ConfigUtil.* import scala.cli.commands.util.BuildCommandHelpers @@ -16,8 +16,7 @@ import scala.cli.config.{ConfigDb, Keys} object Compile extends ScalaCommand[CompileOptions] with BuildCommandHelpers { override def group = "Main" override def sharedOptions(options: CompileOptions): Option[SharedOptions] = Some(options.shared) - override def runCommand(options: CompileOptions, args: RemainingArgs): Unit = { - val logger = options.shared.logger + override def runCommand(options: CompileOptions, args: RemainingArgs, logger: Logger): Unit = { val buildOptions = buildOptionsOrExit(options) val inputs = options.shared.inputs(args.all).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Default.scala b/modules/cli/src/main/scala/scala/cli/commands/Default.scala index c1d04ac598..c27b0e96c2 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Default.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Default.scala @@ -3,6 +3,7 @@ package scala.cli.commands import caseapp.core.help.RuntimeCommandsHelp import caseapp.core.{Error, RemainingArgs} +import scala.build.Logger import scala.build.internal.Constants import scala.build.options.BuildOptions import scala.cli.commands.util.SharedOptionsUtil.* @@ -28,7 +29,7 @@ class Default( sys.exit(0) } - override def runCommand(options: DefaultOptions, args: RemainingArgs): Unit = { + override def runCommand(options: DefaultOptions, args: RemainingArgs, logger: Logger): Unit = { if options.version then println(Version.versionInfo(isSipScala)) else { @@ -39,7 +40,7 @@ class Default( if shouldDefaultToRun then RunOptions.parser else ReplOptions.parser }.parse(rawArgs) match case Left(e) => error(e) - case Right((replOptions: ReplOptions, _)) => Repl.runCommand(replOptions, args) - case Right((runOptions: RunOptions, _)) => Run.runCommand(runOptions, args) + case Right((replOptions: ReplOptions, _)) => Repl.runCommand(replOptions, args, logger) + case Right((runOptions: RunOptions, _)) => Run.runCommand(runOptions, args, logger) } } diff --git a/modules/cli/src/main/scala/scala/cli/commands/DependencyUpdate.scala b/modules/cli/src/main/scala/scala/cli/commands/DependencyUpdate.scala index 91eb378a7f..eb814dc118 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/DependencyUpdate.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/DependencyUpdate.scala @@ -15,11 +15,14 @@ object DependencyUpdate extends ScalaCommand[DependencyUpdateOptions] { override def group = "Main" override def sharedOptions(options: DependencyUpdateOptions): Option[SharedOptions] = Some(options.shared) - override def runCommand(options: DependencyUpdateOptions, args: RemainingArgs): Unit = { + override def runCommand( + options: DependencyUpdateOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { val verbosity = options.shared.logging.verbosity val buildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(args.all).orExit(logger) val (crossSources, _) = diff --git a/modules/cli/src/main/scala/scala/cli/commands/Directories.scala b/modules/cli/src/main/scala/scala/cli/commands/Directories.scala index 1b162048ab..ba6e454986 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Directories.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Directories.scala @@ -2,16 +2,18 @@ package scala.cli.commands import caseapp.* +import scala.build.Logger import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* object Directories extends ScalaCommand[DirectoriesOptions] { override def hidden: Boolean = true override def isRestricted = true - override def loggingOptions(options: DirectoriesOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: DirectoriesOptions, args: RemainingArgs): Unit = { - val logger = options.logging.logger + override def runCommand( + options: DirectoriesOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { if (args.all.nonEmpty) { logger.error("The directories command doesn't accept arguments.") sys.exit(1) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Doc.scala b/modules/cli/src/main/scala/scala/cli/commands/Doc.scala index 12a501c9b7..57ce7ee296 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Doc.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Doc.scala @@ -23,9 +23,8 @@ import scala.util.Properties object Doc extends ScalaCommand[DocOptions] { override def group = "Main" override def sharedOptions(options: DocOptions): Option[SharedOptions] = Some(options.shared) - override def runCommand(options: DocOptions, args: RemainingArgs): Unit = { + override def runCommand(options: DocOptions, args: RemainingArgs, logger: Logger): Unit = { val initialBuildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(args.remaining).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) val threads = BuildThreads.create() diff --git a/modules/cli/src/main/scala/scala/cli/commands/Doctor.scala b/modules/cli/src/main/scala/scala/cli/commands/Doctor.scala index fc9a5aba1d..df82ac178c 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Doctor.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Doctor.scala @@ -30,7 +30,7 @@ import scala.cli.signing.shared.Secret object Doctor extends ScalaCommand[DoctorOptions] { override def group = "Doctor" - override def runCommand(options: DoctorOptions, args: RemainingArgs): Unit = { + override def runCommand(options: DoctorOptions, args: RemainingArgs, logger: Logger): Unit = { checkIsVersionOutdated(options.ghToken.map(_.get())) checkBloopStatus() checkDuplicatesOnPath() diff --git a/modules/cli/src/main/scala/scala/cli/commands/Export.scala b/modules/cli/src/main/scala/scala/cli/commands/Export.scala index 091b11acf3..e03b737f43 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Export.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Export.scala @@ -75,9 +75,8 @@ object Export extends ScalaCommand[ExportOptions] { override def sharedOptions(opts: ExportOptions): Option[SharedOptions] = Some(opts.shared) - override def runCommand(options: ExportOptions, args: RemainingArgs): Unit = { + override def runCommand(options: ExportOptions, args: RemainingArgs, logger: Logger): Unit = { val initialBuildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val output = options.output.getOrElse("dest") val dest = os.Path(output, os.pwd) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Fmt.scala b/modules/cli/src/main/scala/scala/cli/commands/Fmt.scala index 8310c92ee8..b83ea9131f 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Fmt.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Fmt.scala @@ -22,9 +22,8 @@ object Fmt extends ScalaCommand[FmtOptions] { List("scalafmt") ) - override def runCommand(options: FmtOptions, args: RemainingArgs): Unit = { + override def runCommand(options: FmtOptions, args: RemainingArgs, logger: Logger): Unit = { val buildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger // TODO If no input is given, just pass '.' to scalafmt? val (sourceFiles, workspace, _) = diff --git a/modules/cli/src/main/scala/scala/cli/commands/HelpCmd.scala b/modules/cli/src/main/scala/scala/cli/commands/HelpCmd.scala index 45a477baa7..d0df266fb4 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/HelpCmd.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/HelpCmd.scala @@ -3,11 +3,12 @@ package scala.cli.commands import caseapp.* import caseapp.core.help.RuntimeCommandsHelp +import scala.build.Logger import scala.cli.ScalaCliHelp class HelpCmd(actualHelp: => RuntimeCommandsHelp) extends ScalaCommand[HelpOptions] { override def names = List(List("help")) - override def runCommand(options: HelpOptions, args: RemainingArgs) = + override def runCommand(options: HelpOptions, args: RemainingArgs, logger: Logger): Unit = println(actualHelp.help(ScalaCliHelp.helpFormat)) } diff --git a/modules/cli/src/main/scala/scala/cli/commands/InstallCompletions.scala b/modules/cli/src/main/scala/scala/cli/commands/InstallCompletions.scala index 4d08b5741d..11bf14e83d 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/InstallCompletions.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/InstallCompletions.scala @@ -7,6 +7,7 @@ import java.io.File import java.nio.charset.Charset import java.util +import scala.build.Logger import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* import scala.cli.commands.util.VerbosityOptionsUtil.* @@ -17,17 +18,18 @@ object InstallCompletions extends ScalaCommand[InstallCompletionsOptions] { List("install", "completions"), List("install-completions") ) - override def loggingOptions(options: InstallCompletionsOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: InstallCompletionsOptions, args: RemainingArgs): Unit = { + override def runCommand( + options: InstallCompletionsOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { val interactive = options.logging.verbosityOptions.interactiveInstance() lazy val completionsDir = options.output .map(os.Path(_, os.pwd)) .getOrElse(options.directories.directories.completionsDir) - val logger = options.logging.logger - val name = getName(options.name) + val name = getName(options.name) val format = getFormat(options.format).getOrElse { val msg = "Cannot determine current shell. Which would you like to use?" interactive.chooseOne(msg, List("zsh", "bash")).getOrElse { diff --git a/modules/cli/src/main/scala/scala/cli/commands/InstallHome.scala b/modules/cli/src/main/scala/scala/cli/commands/InstallHome.scala index e1f4050019..fb3869367a 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/InstallHome.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/InstallHome.scala @@ -52,11 +52,11 @@ object InstallHome extends ScalaCommand[InstallHomeOptions] { sys.exit(1) } - override def loggingOptions(options: InstallHomeOptions): Option[LoggingOptions] = - Some(options.logging) - - override def runCommand(options: InstallHomeOptions, args: RemainingArgs): Unit = { - val logger = options.logging.logger + override def runCommand( + options: InstallHomeOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { val binDirPath = options.binDirPath.getOrElse(scala.build.Directories.default().binRepoDir / "scala-cli") val destBinPath = binDirPath / options.binaryName diff --git a/modules/cli/src/main/scala/scala/cli/commands/Metabrowse.scala b/modules/cli/src/main/scala/scala/cli/commands/Metabrowse.scala index 1451563772..5ec7614698 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Metabrowse.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Metabrowse.scala @@ -56,9 +56,8 @@ object Metabrowse extends ScalaCommand[MetabrowseOptions] { ) } - override def runCommand(options: MetabrowseOptions, args: RemainingArgs): Unit = { + override def runCommand(options: MetabrowseOptions, args: RemainingArgs, logger: Logger): Unit = { val initialBuildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(args.all).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) val threads = BuildThreads.create() diff --git a/modules/cli/src/main/scala/scala/cli/commands/Package.scala b/modules/cli/src/main/scala/scala/cli/commands/Package.scala index d13d5c0978..1cef122197 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Package.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Package.scala @@ -48,8 +48,7 @@ object Package extends ScalaCommand[PackageOptions] with BuildCommandHelpers { override def sharedOptions(options: PackageOptions): Option[SharedOptions] = Some(options.shared) override def buildOptions(options: PackageOptions): Option[BuildOptions] = Some(options.baseBuildOptions.orExit(options.shared.logger)) - override def runCommand(options: PackageOptions, args: RemainingArgs): Unit = { - val logger = options.shared.logger + override def runCommand(options: PackageOptions, args: RemainingArgs, logger: Logger): Unit = { val inputs = options.shared.inputs(args.remaining).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Repl.scala b/modules/cli/src/main/scala/scala/cli/commands/Repl.scala index 1e07ef6820..4cfe9aced8 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Repl.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Repl.scala @@ -88,12 +88,11 @@ object Repl extends ScalaCommand[ReplOptions] { private def runMode(options: ReplOptions): RunMode.HasRepl = RunMode.Default - override def runCommand(options: ReplOptions, args: RemainingArgs): Unit = { + override def runCommand(options: ReplOptions, args: RemainingArgs, logger: Logger): Unit = { val initialBuildOptions = buildOptionsOrExit(options) def default = Inputs.default().getOrElse { Inputs.empty(Os.pwd, options.shared.markdown.enableMarkdown) } - val logger = options.shared.logger val inputs = options.shared.inputs(args.remaining, defaultInputs = () => Some(default)).orExit(logger) val programArgs = args.unparsed diff --git a/modules/cli/src/main/scala/scala/cli/commands/Run.scala b/modules/cli/src/main/scala/scala/cli/commands/Run.scala index 834b839295..fd2ae6580f 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Run.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Run.scala @@ -45,12 +45,13 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers { .filter(_.trim.nonEmpty) .map(os.Path(_, os.pwd)) - override def runCommand(options: RunOptions, args: RemainingArgs): Unit = - scalaCliRun( + override def runCommand(options: RunOptions, args: RemainingArgs, logger: Logger): Unit = + runCommand( options, args.remaining, args.unparsed, - () => Inputs.default() + () => Inputs.default(), + logger ) override def buildOptions(options: RunOptions): Some[BuildOptions] = Some { @@ -99,15 +100,15 @@ object Run extends ScalaCommand[RunOptions] with BuildCommandHelpers { ) } - def scalaCliRun( + def runCommand( options: RunOptions, inputArgs: Seq[String], programArgs: Seq[String], - defaultInputs: () => Option[Inputs] + defaultInputs: () => Option[Inputs], + logger: Logger ): Unit = { val initialBuildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(inputArgs, defaultInputs = defaultInputs).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) val threads = BuildThreads.create() diff --git a/modules/cli/src/main/scala/scala/cli/commands/ScalaCommand.scala b/modules/cli/src/main/scala/scala/cli/commands/ScalaCommand.scala index 4910dad78d..80322d73ad 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/ScalaCommand.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/ScalaCommand.scala @@ -15,14 +15,16 @@ import scala.build.compiler.SimpleScalaCompiler import scala.build.errors.BuildException import scala.build.internal.{Constants, Runner} import scala.build.options.{BuildOptions, Scope} -import scala.build.{Artifacts, Positioned, ReplArtifacts} +import scala.build.{Artifacts, Logger, Positioned, ReplArtifacts} +import scala.cli.commands.common.HasLoggingOptions +import scala.cli.commands.util.CommonOps.* import scala.cli.commands.util.ScalacOptionsUtil.* import scala.cli.commands.util.SharedOptionsUtil.* import scala.cli.commands.util.{CommandHelpers, FmtOptionsUtil} import scala.cli.{CurrentParams, ScalaCli} import scala.util.{Properties, Try} -abstract class ScalaCommand[T](implicit myParser: Parser[T], help: Help[T]) +abstract class ScalaCommand[T <: HasLoggingOptions](implicit myParser: Parser[T], help: Help[T]) extends Command()(myParser, help) with NeedsArgvCommand with CommandHelpers with RestrictableCommand[T] { @@ -286,22 +288,6 @@ abstract class ScalaCommand[T](implicit myParser: Parser[T], help: Help[T]) sys.exit(1) } - /** @param options - * command-specific [[T]] options - * @return - * by default [[sharedOptions]].logging, override to adjust. - */ - def loggingOptions(options: T): Option[LoggingOptions] = - sharedOptions(options).map(_.logging) - - /** @param options - * command-specific [[T]] options - * @return - * by default [[loggingOptions]].verbosity, override to adjust. - */ - def verbosity(options: T): Option[Int] = - loggingOptions(options).map(_.verbosity) - /** This should be overridden instead of [[run]] when extending [[ScalaCommand]]. * * @param options @@ -309,19 +295,18 @@ abstract class ScalaCommand[T](implicit myParser: Parser[T], help: Help[T]) * @param remainingArgs * arguments remaining after parsing options */ - def runCommand(options: T, remainingArgs: RemainingArgs): Unit + def runCommand(options: T, remainingArgs: RemainingArgs, logger: Logger): Unit /** This implementation is final. Override [[runCommand]] instead. This logic is invoked at the * start of running every [[ScalaCommand]]. */ final override def run(options: T, remainingArgs: RemainingArgs): Unit = { - for (v <- verbosity(options)) - CurrentParams.verbosity = v + CurrentParams.verbosity = options.logging.verbosity maybePrintGroupHelp(options) buildOptions(options).foreach { bo => maybePrintSimpleScalacOutput(options, bo) maybePrintToolsHelp(options, bo) } - runCommand(options, remainingArgs) + runCommand(options, remainingArgs, options.logging.logger) } } diff --git a/modules/cli/src/main/scala/scala/cli/commands/SetupIde.scala b/modules/cli/src/main/scala/scala/cli/commands/SetupIde.scala index cc1f3ccf0a..0f4bfb8476 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/SetupIde.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/SetupIde.scala @@ -52,9 +52,8 @@ object SetupIde extends ScalaCommand[SetupIdeOptions] { joinedBuildOpts.artifacts(logger, Scope.Main) } - override def runCommand(options: SetupIdeOptions, args: RemainingArgs): Unit = { + override def runCommand(options: SetupIdeOptions, args: RemainingArgs, logger: Logger): Unit = { val buildOptions = buildOptionsOrExit(options) - val logger = options.shared.logging.logger val inputs = options.shared.inputs(args.all).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Shebang.scala b/modules/cli/src/main/scala/scala/cli/commands/Shebang.scala index 3d4273442e..408d09d7c2 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Shebang.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Shebang.scala @@ -2,6 +2,7 @@ package scala.cli.commands import caseapp.RemainingArgs +import scala.build.Logger import scala.build.options.BuildOptions import scala.cli.CurrentParams @@ -9,11 +10,12 @@ object Shebang extends ScalaCommand[ShebangOptions] { override def stopAtFirstUnrecognized: Boolean = true override def sharedOptions(options: ShebangOptions): Option[SharedOptions] = Run.sharedOptions(options.runOptions) - override def runCommand(options: ShebangOptions, args: RemainingArgs): Unit = - Run.scalaCliRun( + override def runCommand(options: ShebangOptions, args: RemainingArgs, logger: Logger): Unit = + Run.runCommand( options.runOptions, args.remaining.headOption.toSeq, args.remaining.drop(1), - () => None + () => None, + logger ) } diff --git a/modules/cli/src/main/scala/scala/cli/commands/Test.scala b/modules/cli/src/main/scala/scala/cli/commands/Test.scala index 17ee1569d6..af8528d860 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Test.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Test.scala @@ -42,9 +42,8 @@ object Test extends ScalaCommand[TestOptions] { ) } - override def runCommand(options: TestOptions, args: RemainingArgs): Unit = { + override def runCommand(options: TestOptions, args: RemainingArgs, logger: Logger): Unit = { val initialBuildOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(args.remaining).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) SetupIde.runSafe( diff --git a/modules/cli/src/main/scala/scala/cli/commands/Uninstall.scala b/modules/cli/src/main/scala/scala/cli/commands/Uninstall.scala index ecc3216d13..e4d1494d7f 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Uninstall.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Uninstall.scala @@ -2,17 +2,15 @@ package scala.cli.commands import caseapp.* +import scala.build.Logger import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* import scala.cli.commands.util.VerbosityOptionsUtil.* object Uninstall extends ScalaCommand[UninstallOptions] { - override def loggingOptions(options: UninstallOptions): Option[LoggingOptions] = - Some(options.bloopExit.logging) - override def runCommand(options: UninstallOptions, args: RemainingArgs): Unit = { + override def runCommand(options: UninstallOptions, args: RemainingArgs, logger: Logger): Unit = { val interactive = options.bloopExit.logging.verbosityOptions.interactiveInstance(forceEnable = true) - val logger = options.bloopExit.logging.logger val binDirPath = options.binDirPath.getOrElse(scala.build.Directories.default().binRepoDir / "scala-cli") diff --git a/modules/cli/src/main/scala/scala/cli/commands/UninstallCompletions.scala b/modules/cli/src/main/scala/scala/cli/commands/UninstallCompletions.scala index 7a31ecb9b1..f361ee346f 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/UninstallCompletions.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/UninstallCompletions.scala @@ -4,6 +4,7 @@ import caseapp.* import java.nio.charset.Charset +import scala.build.Logger import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* import scala.cli.internal.ProfileFileUpdater @@ -13,11 +14,12 @@ object UninstallCompletions extends ScalaCommand[UninstallCompletionsOptions] { List("uninstall", "completions"), List("uninstall-completions") ) - override def loggingOptions(options: UninstallCompletionsOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: UninstallCompletionsOptions, args: RemainingArgs): Unit = { - val logger = options.logging.logger - val name = InstallCompletions.getName(options.shared.name) + override def runCommand( + options: UninstallCompletionsOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { + val name = InstallCompletions.getName(options.shared.name) val zDotDir = Option(System.getenv("ZDOTDIR")) .map(os.Path(_, os.pwd)) diff --git a/modules/cli/src/main/scala/scala/cli/commands/Update.scala b/modules/cli/src/main/scala/scala/cli/commands/Update.scala index 9ea4a1b4f9..351f300f1f 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Update.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Update.scala @@ -120,11 +120,12 @@ object Update extends ScalaCommand[UpdateOptions] { ) } - override def loggingOptions(options: UpdateOptions): Option[LoggingOptions] = - Some(options.logging) - - override def runCommand(options: UpdateOptions, remainingArgs: RemainingArgs): Unit = - checkUpdate(options, options.logging.logger) + override def runCommand( + options: UpdateOptions, + remainingArgs: RemainingArgs, + logger: Logger + ): Unit = + checkUpdate(options, logger) def checkUpdate(options: UpdateOptions, logger: Logger): Unit = { val scalaCliBinPath = installDirPath(options) / options.binaryName diff --git a/modules/cli/src/main/scala/scala/cli/commands/Version.scala b/modules/cli/src/main/scala/scala/cli/commands/Version.scala index 2839acdaf9..a9958bc998 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/Version.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/Version.scala @@ -2,14 +2,13 @@ package scala.cli.commands import caseapp.* +import scala.build.Logger import scala.build.internal.Constants import scala.cli.CurrentParams class Version(isSipScala: Boolean) extends ScalaCommand[VersionOptions] { override def group = "Miscellaneous" - override def loggingOptions(options: VersionOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: VersionOptions, args: RemainingArgs): Unit = { + override def runCommand(options: VersionOptions, args: RemainingArgs, logger: Logger): Unit = { if (options.cliVersion) println(Constants.version) else if (options.scalaVersion) diff --git a/modules/cli/src/main/scala/scala/cli/commands/bloop/Bloop.scala b/modules/cli/src/main/scala/scala/cli/commands/bloop/Bloop.scala index ab3634e72a..6d9dd9ce09 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/bloop/Bloop.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/bloop/Bloop.scala @@ -58,11 +58,8 @@ object Bloop extends ScalaCommand[BloopOptions] { ) } - override def loggingOptions(options: BloopOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: BloopOptions, args: RemainingArgs): Unit = { + override def runCommand(options: BloopOptions, args: RemainingArgs, logger: Logger): Unit = { val threads = BloopThreads.create() - val logger = options.logging.logger val bloopRifleConfig = bloopRifleConfig0(options) val isRunning = BloopRifle.check(bloopRifleConfig, logger.bloopRifleLogger) diff --git a/modules/cli/src/main/scala/scala/cli/commands/bloop/BloopOutput.scala b/modules/cli/src/main/scala/scala/cli/commands/bloop/BloopOutput.scala index 247074e063..6814ecf572 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/bloop/BloopOutput.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/bloop/BloopOutput.scala @@ -2,6 +2,7 @@ package scala.cli.commands.bloop import caseapp.core.RemainingArgs +import scala.build.Logger import scala.build.blooprifle.BloopRifleConfig import scala.cli.CurrentParams import scala.cli.commands.util.CommonOps.* @@ -14,10 +15,7 @@ object BloopOutput extends ScalaCommand[BloopOutputOptions] { override def names: List[List[String]] = List( List("bloop", "output") ) - override def loggingOptions(options: BloopOutputOptions): Option[LoggingOptions] = - Some(options.logging) - override def runCommand(options: BloopOutputOptions, args: RemainingArgs): Unit = { - val logger = options.logging.logger + override def runCommand(options: BloopOutputOptions, args: RemainingArgs, logger: Logger): Unit = { val bloopRifleConfig = options.compilationServer.bloopRifleConfig( logger, CoursierOptions().coursierCache(logger.coursierLogger("Downloading Bloop")), // unused here diff --git a/modules/cli/src/main/scala/scala/cli/commands/config/Config.scala b/modules/cli/src/main/scala/scala/cli/commands/config/Config.scala index eefd286962..558fa3d52b 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/config/Config.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/config/Config.scala @@ -5,6 +5,7 @@ import coursier.cache.ArchiveCache import java.util.Base64 +import scala.build.Logger import scala.build.Ops.* import scala.build.errors.{BuildException, CompositeBuildException, MalformedCliInputError} import scala.cli.commands.ScalaCommand @@ -17,9 +18,7 @@ object Config extends ScalaCommand[ConfigOptions] { override def hidden = true override def isRestricted = true - override def runCommand(options: ConfigOptions, args: RemainingArgs): Unit = { - - val logger = options.logging.logger + override def runCommand(options: ConfigOptions, args: RemainingArgs, logger: Logger): Unit = { val directories = options.directories.directories if (options.dump) { diff --git a/modules/cli/src/main/scala/scala/cli/commands/default/DefaultFile.scala b/modules/cli/src/main/scala/scala/cli/commands/default/DefaultFile.scala index 76afcfd8b5..506922dac9 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/default/DefaultFile.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/default/DefaultFile.scala @@ -56,10 +56,11 @@ object DefaultFile extends ScalaCommand[DefaultFileOptions] { sys.exit(1) } - override def runCommand(options: DefaultFileOptions, args: RemainingArgs): Unit = { - - val logger = options.logging.logger - + override def runCommand( + options: DefaultFileOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { lazy val allArgs = { val l = args.all if (l.isEmpty) { diff --git a/modules/cli/src/main/scala/scala/cli/commands/github/SecretCreate.scala b/modules/cli/src/main/scala/scala/cli/commands/github/SecretCreate.scala index 261e6cca18..c8a90d9a5a 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/github/SecretCreate.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/github/SecretCreate.scala @@ -132,10 +132,11 @@ object SecretCreate extends ScalaCommand[SecretCreateOptions] { } } - override def runCommand(options: SecretCreateOptions, args: RemainingArgs): Unit = { - - val logger = options.shared.logging.logger - + override def runCommand( + options: SecretCreateOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { val secrets = args.all.map(parseSecretKv) val backend = ScalaCliSttpBackend.httpURLConnection(logger) diff --git a/modules/cli/src/main/scala/scala/cli/commands/github/SecretList.scala b/modules/cli/src/main/scala/scala/cli/commands/github/SecretList.scala index 935835da61..e96e1fee74 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/github/SecretList.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/github/SecretList.scala @@ -55,10 +55,11 @@ object SecretList extends ScalaCommand[ListSecretsOptions] { readFromString(body)(GitHubApi.secretListCodec) } - override def runCommand(options: ListSecretsOptions, args: RemainingArgs): Unit = { - - val logger = options.shared.logging.logger - + override def runCommand( + options: ListSecretsOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { val backend = ScalaCliSttpBackend.httpURLConnection(logger) val list0 = list( diff --git a/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPull.scala b/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPull.scala index 7ca0c67c3e..1d7f6d46b1 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPull.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPull.scala @@ -2,6 +2,7 @@ package scala.cli.commands.pgp import caseapp.core.RemainingArgs +import scala.build.Logger import scala.cli.commands.ScalaCommand import scala.cli.commands.pgp.KeyServer import scala.cli.commands.util.CommonOps.* @@ -15,9 +16,7 @@ object PgpPull extends ScalaCommand[PgpPullOptions] { List("pgp", "pull") ) - override def runCommand(options: PgpPullOptions, args: RemainingArgs): Unit = { - - val logger = options.logging.logger + override def runCommand(options: PgpPullOptions, args: RemainingArgs, logger: Logger): Unit = { val backend = ScalaCliSttpBackend.httpURLConnection(logger) val keyServerUri = options.shared.keyServerUriOptOrExit(logger).getOrElse { diff --git a/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPush.scala b/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPush.scala index 8bf60eb996..cee2fbf0cb 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPush.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/pgp/PgpPush.scala @@ -3,6 +3,7 @@ package scala.cli.commands.pgp import caseapp.core.RemainingArgs import coursier.cache.ArchiveCache +import scala.build.Logger import scala.cli.commands.ScalaCommand import scala.cli.commands.pgp.{KeyServer, PgpProxyMaker} import scala.cli.commands.util.CommonOps.* @@ -17,9 +18,7 @@ object PgpPush extends ScalaCommand[PgpPushOptions] { List("pgp", "push") ) - override def runCommand(options: PgpPushOptions, args: RemainingArgs): Unit = { - - val logger = options.logging.logger + override def runCommand(options: PgpPushOptions, args: RemainingArgs, logger: Logger): Unit = { val backend = ScalaCliSttpBackend.httpURLConnection(logger) val keyServerUri = options.shared.keyServerUriOptOrExit(logger).getOrElse { diff --git a/modules/cli/src/main/scala/scala/cli/commands/publish/Publish.scala b/modules/cli/src/main/scala/scala/cli/commands/publish/Publish.scala index 9ef3712e86..3c8c35d0bf 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/publish/Publish.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/publish/Publish.scala @@ -173,12 +173,11 @@ object Publish extends ScalaCommand[PublishOptions] with BuildCommandHelpers { sys.exit(0) } - override def runCommand(options: PublishOptions, args: RemainingArgs): Unit = { + override def runCommand(options: PublishOptions, args: RemainingArgs, logger: Logger): Unit = { maybePrintLicensesAndExit(options.publishParams) maybePrintChecksumsAndExit(options.sharedPublish) val baseOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(args.all).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) diff --git a/modules/cli/src/main/scala/scala/cli/commands/publish/PublishLocal.scala b/modules/cli/src/main/scala/scala/cli/commands/publish/PublishLocal.scala index ba2ae289c3..b799a0a8b9 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/publish/PublishLocal.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/publish/PublishLocal.scala @@ -2,8 +2,8 @@ package scala.cli.commands.publish import caseapp.core.RemainingArgs -import scala.build.BuildThreads import scala.build.options.BuildOptions +import scala.build.{BuildThreads, Logger} import scala.cli.CurrentParams import scala.cli.commands.util.SharedOptionsUtil.* import scala.cli.commands.{ScalaCommand, SharedOptions} @@ -20,12 +20,15 @@ object PublishLocal extends ScalaCommand[PublishLocalOptions] { List("publish", "local") ) - override def runCommand(options: PublishLocalOptions, args: RemainingArgs): Unit = { + override def runCommand( + options: PublishLocalOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { Publish.maybePrintLicensesAndExit(options.publishParams) Publish.maybePrintChecksumsAndExit(options.sharedPublish) val baseOptions = buildOptionsOrExit(options) - val logger = options.shared.logger val inputs = options.shared.inputs(args.all).orExit(logger) CurrentParams.workspaceOpt = Some(inputs.workspace) diff --git a/modules/cli/src/main/scala/scala/cli/commands/publish/PublishSetup.scala b/modules/cli/src/main/scala/scala/cli/commands/publish/PublishSetup.scala index f5c3ef7dd7..7a5f9c9d82 100644 --- a/modules/cli/src/main/scala/scala/cli/commands/publish/PublishSetup.scala +++ b/modules/cli/src/main/scala/scala/cli/commands/publish/PublishSetup.scala @@ -5,15 +5,15 @@ import coursier.cache.ArchiveCache import java.nio.charset.StandardCharsets -import scala.build.Ops._ +import scala.build.Ops.* import scala.build.errors.CompositeBuildException import scala.build.internal.CustomCodeWrapper import scala.build.options.{BuildOptions, InternalOptions, Scope} -import scala.build.{CrossSources, Sources} +import scala.build.{CrossSources, Logger, Sources} import scala.cli.ScalaCli import scala.cli.commands.github.{LibSodiumJni, SecretCreate, SecretList} -import scala.cli.commands.publish.ConfigUtil._ -import scala.cli.commands.util.CommonOps._ +import scala.cli.commands.publish.ConfigUtil.* +import scala.cli.commands.util.CommonOps.* import scala.cli.commands.util.{ScalaCliSttpBackend, SharedOptionsUtil} import scala.cli.commands.{CommandUtils, ScalaCommand} import scala.cli.config.{ConfigDb, Keys} @@ -28,11 +28,13 @@ object PublishSetup extends ScalaCommand[PublishSetupOptions] { List("publish", "setup") ) - override def runCommand(options: PublishSetupOptions, args: RemainingArgs): Unit = { - + override def runCommand( + options: PublishSetupOptions, + args: RemainingArgs, + logger: Logger + ): Unit = { Publish.maybePrintLicensesAndExit(options.publishParams) - val logger = options.logging.logger val coursierCache = options.coursier.coursierCache(logger.coursierLogger("")) lazy val configDb = ConfigDb.open(options.directories.directories.dbPath.toNIO)