summaryrefslogtreecommitdiff
path: root/scalalib
diff options
context:
space:
mode:
authorPaulius Imbrasas <paulius@permutive.com>2019-06-06 09:27:19 +0100
committerPaulius Imbrasas <paulius@permutive.com>2019-06-06 09:30:01 +0100
commit70e68d4cb10132512501c7d310826412c7bd46e8 (patch)
tree20a6d20ee7c3f83bc68be9f93a3736097975a83f /scalalib
parent1db2eed37b8d455efdc09bb308b85a8196e33d17 (diff)
downloadmill-70e68d4cb10132512501c7d310826412c7bd46e8.tar.gz
mill-70e68d4cb10132512501c7d310826412c7bd46e8.tar.bz2
mill-70e68d4cb10132512501c7d310826412c7bd46e8.zip
Configurable read and connect timeouts for Sonatype publishing
Diffstat (limited to 'scalalib')
-rw-r--r--scalalib/src/PublishModule.scala8
-rw-r--r--scalalib/src/publish/SonatypeHttpApi.scala10
-rw-r--r--scalalib/src/publish/SonatypePublisher.scala4
3 files changed, 18 insertions, 4 deletions
diff --git a/scalalib/src/PublishModule.scala b/scalalib/src/PublishModule.scala
index 9a4374f2..55ea48e6 100644
--- a/scalalib/src/PublishModule.scala
+++ b/scalalib/src/PublishModule.scala
@@ -83,6 +83,8 @@ trait PublishModule extends JavaModule { outer =>
gpgPassphrase: String = null,
gpgKeyName: String = null,
signed: Boolean = true,
+ readTimeout: Int = 1000,
+ connectTimeout: Int = 5000,
release: Boolean): define.Command[Unit] = T.command {
val PublishModule.PublishData(artifactInfo, artifacts) = publishArtifacts()
new SonatypePublisher(
@@ -92,6 +94,8 @@ trait PublishModule extends JavaModule { outer =>
Option(gpgPassphrase),
Option(gpgKeyName),
signed,
+ readTimeout,
+ connectTimeout,
T.ctx().log
).publish(artifacts.map{case (a, b) => (a.path, b)}, artifactInfo, release)
}
@@ -107,6 +111,8 @@ object PublishModule extends ExternalModule {
def publishAll(sonatypeCreds: String,
gpgPassphrase: String = null,
publishArtifacts: mill.main.Tasks[PublishModule.PublishData],
+ readTimeout: Int = 1000,
+ connectTimeout: Int = 5000,
release: Boolean = false,
gpgKeyName: String = null,
sonatypeUri: String = "https://oss.sonatype.org/service/local",
@@ -123,6 +129,8 @@ object PublishModule extends ExternalModule {
Option(gpgPassphrase),
Option(gpgKeyName),
signed,
+ readTimeout,
+ connectTimeout,
T.ctx().log
).publishAll(
release,
diff --git a/scalalib/src/publish/SonatypeHttpApi.scala b/scalalib/src/publish/SonatypeHttpApi.scala
index 217d556e..6a4d4d4f 100644
--- a/scalalib/src/publish/SonatypeHttpApi.scala
+++ b/scalalib/src/publish/SonatypeHttpApi.scala
@@ -7,8 +7,13 @@ import java.util.Base64
import scala.concurrent.duration._
-class SonatypeHttpApi(uri: String, credentials: String) {
- val http = requests.Session(connectTimeout = 5000, readTimeout = 1000, maxRedirects = 0)
+class SonatypeHttpApi(
+ uri: String,
+ credentials: String,
+ readTimeout: Int,
+ connectTimeout: Int
+) {
+ val http = requests.Session(readTimeout = readTimeout, connectTimeout = connectTimeout, maxRedirects = 0)
private val base64Creds = base64(credentials)
@@ -48,7 +53,6 @@ class SonatypeHttpApi(uri: String, credentials: String) {
def getStagingRepoState(stagingRepoId: String): String = {
val response = http.get(
s"${uri}/staging/repository/${stagingRepoId}",
- readTimeout = 60000,
headers = commonHeaders
)
ujson.read(response.data.text)("type").str.toString
diff --git a/scalalib/src/publish/SonatypePublisher.scala b/scalalib/src/publish/SonatypePublisher.scala
index 5ca8f5c1..5c760574 100644
--- a/scalalib/src/publish/SonatypePublisher.scala
+++ b/scalalib/src/publish/SonatypePublisher.scala
@@ -12,9 +12,11 @@ class SonatypePublisher(uri: String,
gpgPassphrase: Option[String],
gpgKeyName: Option[String],
signed: Boolean,
+ readTimeout: Int,
+ connectTimeout: Int,
log: Logger) {
- private val api = new SonatypeHttpApi(uri, credentials)
+ private val api = new SonatypeHttpApi(uri, credentials, readTimeout = readTimeout, connectTimeout = connectTimeout)
def publish(fileMapping: Seq[(os.Path, String)], artifact: Artifact, release: Boolean): Unit = {
publishAll(release, fileMapping -> artifact)