Skip to content

Commit

Permalink
Merge pull request #1008 from alexarchambault/publish-local
Browse files Browse the repository at this point in the history
Add "publish local" command
  • Loading branch information
alexarchambault authored May 16, 2022
2 parents b72c688 + adf14dc commit 310e9ed
Show file tree
Hide file tree
Showing 13 changed files with 850 additions and 291 deletions.
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

0 comments on commit 310e9ed

Please sign in to comment.