diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-02-04 23:03:05 -0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-02-04 23:03:05 -0800 |
commit | 94f1ecf85b792e789c65ed88fcca5360f5fce0fb (patch) | |
tree | 0688e4d55a6b6b4b111c046fe334ababf24614f5 /scalalib/src/mill/scalalib/PublishModule.scala | |
parent | 1635aa9cb784f0a1ac60b5f3ba2e351acddc4063 (diff) | |
download | mill-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.scala | 40 |
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 |