summaryrefslogtreecommitdiff
path: root/scalalib/src/mill/scalalib/PublishModule.scala
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-02-04 23:03:05 -0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-02-04 23:03:05 -0800
commit94f1ecf85b792e789c65ed88fcca5360f5fce0fb (patch)
tree0688e4d55a6b6b4b111c046fe334ababf24614f5 /scalalib/src/mill/scalalib/PublishModule.scala
parent1635aa9cb784f0a1ac60b5f3ba2e351acddc4063 (diff)
downloadmill-94f1ecf85b792e789c65ed88fcca5360f5fce0fb.tar.gz
mill-94f1ecf85b792e789c65ed88fcca5360f5fce0fb.tar.bz2
mill-94f1ecf85b792e789c65ed88fcca5360f5fce0fb.zip
Fix github release creation, add new batch publishing capability to try and speed up publishing lots of modules0.0.5
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