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

Add "publish local" command #1008

Merged
merged 6 commits into from
May 16, 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
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package scala.cli.commands.publish

import caseapp._

import scala.cli.commands.{CompileCrossOptions, MainClassOptions, SharedOptions, SharedWatchOptions}

// format: off
final case class PublishLocalOptions(
@Recurse
shared: SharedOptions = SharedOptions(),
@Recurse
watch: SharedWatchOptions = SharedWatchOptions(),
@Recurse
compileCross: CompileCrossOptions = CompileCrossOptions(),
@Recurse
mainClass: MainClassOptions = MainClassOptions(),
@Recurse
publishParams: PublishParamsOptions = PublishParamsOptions(),
@Recurse
sharedPublish: SharedPublishOptions = SharedPublishOptions()
)
// format: on

object PublishLocalOptions {
implicit lazy val parser: Parser[PublishLocalOptions] = Parser.derive
implicit lazy val help: Help[PublishLocalOptions] = Help.derive
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package scala.cli.commands.publish
import caseapp._

import scala.cli.commands.{CompileCrossOptions, MainClassOptions, SharedOptions, SharedWatchOptions}
import scala.cli.signing.shared.PasswordOption
import scala.cli.signing.util.ArgParsers._

// format: off
final case class PublishOptions(
Expand All @@ -16,52 +14,16 @@ final case class PublishOptions(
compileCross: CompileCrossOptions = CompileCrossOptions(),
@Recurse
mainClass: MainClassOptions = MainClassOptions(),
@Recurse
publishParams: PublishParamsOptions = PublishParamsOptions(),
@Recurse
publishRepo: PublishRepositoryOptions = PublishRepositoryOptions(),
@Recurse
sharedPublish: SharedPublishOptions = SharedPublishOptions(),

@Group("Publishing")
@HelpMessage("Directory where temporary files for publishing should be written")
@Hidden
workingDir: Option[String] = None,

@Group("Publishing")
@Hidden
@HelpMessage("Scala version suffix to append to the module name, like \"_2.13\" or \"_3\"")
@ValueDescription("suffix")
scalaVersionSuffix: Option[String] = None,
@Group("Publishing")
@Hidden
@HelpMessage("Scala platform suffix to append to the module name, like \"_sjs1\" or \"_native0.4\"")
@ValueDescription("suffix")
scalaPlatformSuffix: Option[String] = None,

@Group("Publishing")
@HelpMessage("Whether to build and publish source JARs")
sources: Option[Boolean] = None,

@Group("Publishing")
@HelpMessage("Whether to build and publish doc JARs")
@ExtraName("scaladoc")
@ExtraName("javadoc")
doc: Option[Boolean] = None,

@Group("Publishing")
@HelpMessage("ID of the GPG key to use to sign artifacts")
@ValueDescription("key-id")
@ExtraName("K")
gpgKey: Option[String] = None,

@Group("Publishing")
@HelpMessage("Method to use to sign artifacts")
@ValueDescription("gpg|bc")
signer: Option[String] = None,

@Group("Publishing")
@HelpMessage("gpg command-line options")
@ValueDescription("argument")
@ExtraName("G")
@ExtraName("gpgOpt")
gpgOption: List[String] = Nil
ivy2LocalLike: Option[Boolean] = None
)
// format: on

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package scala.cli.commands.publish

import caseapp._

import scala.cli.signing.shared.PasswordOption
import scala.cli.signing.util.ArgParsers._

// format: off
final case class PublishParamsOptions(

@Group("Publishing")
@HelpMessage("Organization to publish artifacts under")
organization: Option[String] = None,
@Group("Publishing")
@HelpMessage("Name to publish artifacts as")
name: Option[String] = None,
@Group("Publishing")
@HelpMessage("Final name to publish artifacts as, including Scala version and platform suffixes if any")
moduleName: Option[String] = None,
@Group("Publishing")
@HelpMessage("Version to publish artifacts as")
version: Option[String] = None,
@Group("Publishing")
@HelpMessage("How to compute the version to publish artifacts as")
computeVersion: Option[String] = None,
@Group("Publishing")
@HelpMessage("URL to put in publishing metadata")
url: Option[String] = None,
@Group("Publishing")
@HelpMessage("License to put in publishing metadata")
@ValueDescription("name:URL")
license: Option[String] = None,
@Group("Publishing")
@HelpMessage("VCS information to put in publishing metadata")
vcs: Option[String] = None,
@Group("Publishing")
@HelpMessage("Description to put in publishing metadata")
description: Option[String] = None,
@Group("Publishing")
@HelpMessage("Developer(s) to add in publishing metadata, like \"alex|Alex|https://alex.info\" or \"alex|Alex|https://alex.info|alex@alex.me\"")
@ValueDescription("id|name|URL|email")
developer: List[String] = Nil,

@Group("Publishing")
@HelpMessage("Secret key to use to sign artifacts with BouncyCastle")
secretKey: Option[PasswordOption] = None,

@Group("Publishing")
@HelpMessage("Password of secret key to use to sign artifacts with BouncyCastle")
@ValueDescription("value:…")
@ExtraName("secretKeyPass")
secretKeyPassword: Option[PasswordOption] = None

)
// format: on

object PublishParamsOptions {
lazy val parser: Parser[PublishParamsOptions] = Parser.derive
implicit lazy val parserAux: Parser.Aux[PublishParamsOptions, parser.D] = parser
implicit lazy val help: Help[PublishParamsOptions] = Help.derive
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package scala.cli.commands.publish

import caseapp._

import scala.cli.signing.shared.PasswordOption
import scala.cli.signing.util.ArgParsers._

// format: off
final case class PublishRepositoryOptions(

@Group("Publishing")
@HelpMessage("Repository to publish to")
@ValueDescription("URL or path")
@ExtraName("R")
@ExtraName("publishRepo")
publishRepository: Option[String] = None,

@Group("Publishing")
@HelpMessage("User to use with publishing repository")
@ValueDescription("user")
user: Option[PasswordOption] = None,

@Group("Publishing")
@HelpMessage("Password to use with publishing repository")
@ValueDescription("value:…")
password: Option[PasswordOption] = None

)
// format: on

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

import caseapp._

import scala.cli.signing.shared.PasswordOption
import scala.cli.signing.util.ArgParsers._

// format: off
final case class SharedPublishOptions(

@Group("Publishing")
@HelpMessage("Organization to publish artifacts under")
organization: Option[String] = None,
@Group("Publishing")
@HelpMessage("Name to publish artifacts as")
name: Option[String] = None,
@Group("Publishing")
@HelpMessage("Final name to publish artifacts as, including Scala version and platform suffixes if any")
moduleName: Option[String] = None,
@Group("Publishing")
@HelpMessage("Version to publish artifacts as")
version: Option[String] = None,
@Group("Publishing")
@HelpMessage("How to compute the version to publish artifacts as")
computeVersion: Option[String] = None,
@Group("Publishing")
@HelpMessage("URL to put in publishing metadata")
url: Option[String] = None,
@Group("Publishing")
@HelpMessage("License to put in publishing metadata")
@ValueDescription("name:URL")
license: Option[String] = None,
@HelpMessage("Directory where temporary files for publishing should be written")
@Hidden
workingDir: Option[String] = None,

@Group("Publishing")
@HelpMessage("VCS information to put in publishing metadata")
vcs: Option[String] = None,
@Hidden
@HelpMessage("Scala version suffix to append to the module name, like \"_2.13\" or \"_3\"")
@ValueDescription("suffix")
scalaVersionSuffix: Option[String] = None,
@Group("Publishing")
@HelpMessage("Description to put in publishing metadata")
description: Option[String] = None,
@Hidden
@HelpMessage("Scala platform suffix to append to the module name, like \"_sjs1\" or \"_native0.4\"")
@ValueDescription("suffix")
scalaPlatformSuffix: Option[String] = None,

@Group("Publishing")
@HelpMessage("Developer(s) to add in publishing metadata, like \"alex|Alex|https://alex.info\" or \"alex|Alex|https://alex.info|alex@alex.me\"")
@ValueDescription("id|name|URL|email")
developer: List[String] = Nil,
@HelpMessage("Whether to build and publish source JARs")
sources: Option[Boolean] = None,

@Group("Publishing")
@HelpMessage("Repository to publish to")
@ValueDescription("URL or path")
@ExtraName("R")
@ExtraName("publishRepo")
publishRepository: Option[String] = None,
@HelpMessage("Whether to build and publish doc JARs")
@ExtraName("scaladoc")
@ExtraName("javadoc")
doc: Option[Boolean] = None,

@Group("Publishing")
@HelpMessage("User to use with publishing repository")
@ValueDescription("user")
user: Option[PasswordOption] = None,
@HelpMessage("ID of the GPG key to use to sign artifacts")
@ValueDescription("key-id")
@ExtraName("K")
gpgKey: Option[String] = None,

@Group("Publishing")
@HelpMessage("Password to use with publishing repository")
@ValueDescription("value:…")
password: Option[PasswordOption] = None,
@HelpMessage("Method to use to sign artifacts")
@ValueDescription("gpg|bc")
signer: Option[String] = None,

@Group("Publishing")
@HelpMessage("Secret key to use to sign artifacts with BouncyCastle")
secretKey: Option[PasswordOption] = None,
@HelpMessage("gpg command-line options")
@ValueDescription("argument")
@ExtraName("G")
@ExtraName("gpgOpt")
gpgOption: List[String] = Nil,

@Group("Publishing")
@HelpMessage("Password of secret key to use to sign artifacts with BouncyCastle")
@ValueDescription("value:…")
@ExtraName("secretKeyPass")
secretKeyPassword: Option[PasswordOption] = None
@HelpMessage("Set Ivy 2 home directory")
@ValueDescription("path")
ivy2Home: Option[String] = None

)
// format: on
Expand Down
3 changes: 2 additions & 1 deletion modules/cli/src/main/scala/scala/cli/ScalaCliCommands.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import scala.cli.commands._
import scala.cli.commands.bloop.BloopOutput
import scala.cli.commands.github.{SecretCreate, SecretList}
import scala.cli.commands.pgp.{PgpCommands, PgpCommandsSubst}
import scala.cli.commands.publish.Publish
import scala.cli.commands.publish.{Publish, PublishLocal}

class ScalaCliCommands(
val progName: String,
Expand Down Expand Up @@ -45,6 +45,7 @@ class ScalaCliCommands(
Repl,
Package,
Publish,
PublishLocal,
Run,
SecretCreate,
SecretList,
Expand Down
Loading