summaryrefslogtreecommitdiff
path: root/scalalib/src/mill/scalalib/PublishModule.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalalib/src/mill/scalalib/PublishModule.scala')
-rw-r--r--scalalib/src/mill/scalalib/PublishModule.scala40
1 files changed, 32 insertions, 8 deletions
diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/mill/scalalib/PublishModule.scala
index 8dfa0663..5c8b35e6 100644
--- a/scalalib/src/mill/scalalib/PublishModule.scala
+++ b/scalalib/src/mill/scalalib/PublishModule.scala
@@ -2,8 +2,9 @@ package mill
package scalalib
import ammonite.ops._
-import mill.define.Task
+import mill.define.{ExternalModule, Task}
import mill.eval.{PathRef, Result}
+import mill.scalalib.publish.SonatypePublisher
import mill.util.Loose.Agg
/**
* Configuration necessary for publishing a Scala module to Maven Central or similar
@@ -60,20 +61,43 @@ trait PublishModule extends ScalaModule { outer =>
def sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots"
- def publish(sonatypeCreds: String, gpgPassphrase: String): define.Command[Unit] = T.command {
+ def publishArtifacts = T{
val baseName = s"${artifactId()}-${publishVersion()}"
- val artifacts = Seq(
- jar().path -> s"${baseName}.jar",
- sourcesJar().path -> s"${baseName}-sources.jar",
- docsJar().path -> s"${baseName}-javadoc.jar",
- pom().path -> s"${baseName}.pom"
+ Seq(
+ jar().path -> s"$baseName.jar",
+ sourcesJar().path -> s"$baseName-sources.jar",
+ docsJar().path -> s"$baseName-javadoc.jar",
+ pom().path -> s"$baseName.pom"
)
+ }
+
+ def publish(sonatypeCreds: String, gpgPassphrase: String): define.Command[Unit] = T.command {
new SonatypePublisher(
sonatypeUri,
sonatypeSnapshotUri,
sonatypeCreds,
gpgPassphrase,
T.ctx().log
- ).publish(artifacts, artifact())
+ ).publish(publishArtifacts(), artifact())
}
}
+object PublishModule extends ExternalModule{
+ def publishAll(sonatypeCreds: String,
+ gpgPassphrase: String,
+ modules: Seq[PublishModule],
+ sonatypeUri: String = "https://oss.sonatype.org/service/local",
+ sonatypeSnapshotUri: String = "https://oss.sonatype.org/content/repositories/snapshots") = T.task{
+ new SonatypePublisher(
+ sonatypeUri,
+ sonatypeSnapshotUri,
+ sonatypeCreds,
+ gpgPassphrase,
+ T.ctx().log
+ ).publishAll(
+ Task.traverse(modules)(
+ m => T.task{(m.publishArtifacts(), m.artifact())}
+ )():_*
+ )
+ }
+ def millDiscover = mill.define.Discover[this.type]
+} \ No newline at end of file