summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2019-05-19 15:15:24 +0800
committerGitHub <noreply@github.com>2019-05-19 15:15:24 +0800
commit68505aad4a22686594965bc910e60c8d2b6a95d4 (patch)
tree4c2099e21593a840c7119901becc0cbb8682956f
parent7d706641f6f9caa0509903f691d16d78402b4623 (diff)
downloadmill-68505aad4a22686594965bc910e60c8d2b6a95d4.tar.gz
mill-68505aad4a22686594965bc910e60c8d2b6a95d4.tar.bz2
mill-68505aad4a22686594965bc910e60c8d2b6a95d4.zip
Bump ammonite to 1.6.7 (#610)
* bump ammonite to 1.6.7 * upgrade all the things * add scalaj-http shims for bootstrapping * wip * tweak-error-message * tweak coursier * .
-rwxr-xr-xbuild.sc6
-rw-r--r--ci/shared.sc1
-rw-r--r--contrib/bloop/src/mill.contrib.bloop/BloopImpl.scala19
-rw-r--r--contrib/playlib/src/mill/playlib/RouterModule.scala4
-rw-r--r--contrib/scalapblib/src/ScalaPBModule.scala4
-rw-r--r--contrib/twirllib/src/TwirlModule.scala4
-rw-r--r--main/core/src/eval/Evaluator.scala4
-rw-r--r--main/core/src/util/JsonFormatters.scala5
-rw-r--r--main/src/main/MainRunner.scala2
-rw-r--r--main/src/main/VisualizeModule.scala4
-rw-r--r--main/src/modules/Jvm.scala43
-rw-r--r--main/src/modules/Util.scala2
-rw-r--r--scalajslib/src/ScalaJSModule.scala1
-rw-r--r--scalalib/api/src/ZincWorkerApi.scala2
-rw-r--r--scalalib/src/Dep.scala34
-rwxr-xr-xscalalib/src/GenIdeaImpl.scala4
-rw-r--r--scalalib/src/JavaModule.scala10
-rw-r--r--scalalib/src/Lib.scala2
-rw-r--r--scalalib/src/ScalaModule.scala9
-rw-r--r--scalalib/src/Versions.scala2
-rw-r--r--scalalib/src/ZincWorkerModule.scala4
-rw-r--r--scalalib/src/dependency/metadata/MavenMetadataLoader.scala5
-rw-r--r--scalalib/src/publish/SonatypeHttpApi.scala116
-rw-r--r--scalalib/src/publish/SonatypePublisher.scala5
-rw-r--r--scalalib/src/publish/settings.scala6
-rw-r--r--scalalib/test/src/GenIdeaTests.scala3
-rw-r--r--scalalib/test/src/ResolveDepsTests.scala3
-rw-r--r--scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala12
-rw-r--r--scalalib/test/src/dependency/updates/UpdatesFinderTests.scala5
-rw-r--r--scalanativelib/src/ScalaNativeModule.scala7
30 files changed, 191 insertions, 137 deletions
diff --git a/build.sc b/build.sc
index fd5d4e29..4412ff9f 100755
--- a/build.sc
+++ b/build.sc
@@ -1,7 +1,7 @@
import $file.ci.shared
import $file.ci.upload
import java.nio.file.attribute.PosixFilePermission
-
+import $ivy.`org.scalaj::scalaj-http:2.4.1`
import ammonite.ops._
import coursier.maven.MavenRepository
import mill._
@@ -93,7 +93,7 @@ object main extends MillModule {
def ivyDeps = Agg(
// Keep synchronized with ammonite in Versions.scala
- ivy"com.lihaoyi:::ammonite:1.6.0",
+ ivy"com.lihaoyi:::ammonite:1.6.7",
// Necessary so we can share the JNA classes throughout the build process
ivy"net.java.dev.jna:jna:4.5.0",
ivy"net.java.dev.jna:jna-platform:4.5.0"
@@ -213,6 +213,7 @@ object scalajslib extends MillModule {
object api extends MillApiModule{
def moduleDeps = Seq(main.core)
+ def ivyDeps = Agg(ivy"org.scala-sbt:test-interface:1.0")
}
object worker extends Cross[WorkerModule]("0.6", "1.0")
class WorkerModule(scalajsBinary: String) extends MillApiModule{
@@ -337,6 +338,7 @@ object scalanativelib extends MillModule {
}
object api extends MillApiModule{
def moduleDeps = Seq(main.core)
+ def ivyDeps = Agg(ivy"org.scala-sbt:test-interface:1.0")
}
object worker extends Cross[WorkerModule]("0.3")
class WorkerModule(scalaNativeBinary: String) extends MillApiModule {
diff --git a/ci/shared.sc b/ci/shared.sc
index a496fd1f..89e504fe 100644
--- a/ci/shared.sc
+++ b/ci/shared.sc
@@ -4,6 +4,7 @@
* via import $file
*/
+import $ivy.`org.scalaj::scalaj-http:2.4.1`
import ammonite.ops.{write, Path, mkdir, RelPath, up}
def argNames(n: Int) = {
diff --git a/contrib/bloop/src/mill.contrib.bloop/BloopImpl.scala b/contrib/bloop/src/mill.contrib.bloop/BloopImpl.scala
index e99b25d5..03af2465 100644
--- a/contrib/bloop/src/mill.contrib.bloop/BloopImpl.scala
+++ b/contrib/bloop/src/mill.contrib.bloop/BloopImpl.scala
@@ -238,19 +238,22 @@ class BloopImpl(ev: () => Evaluator, wd: Path) extends ExternalModule { outer =>
import coursier.util._
def source(r: Resolution) = Resolution(
- r.dependencies.map(d =>
- d.copy(attributes = d.attributes.copy(classifier = "sources")))
+ r.dependencies
+ .map(d =>
+ d.copy(attributes = d.attributes.copy(classifier = coursier.Classifier("sources")))
+ )
+ .toSeq
)
import scala.concurrent.ExecutionContext.Implicits.global
- val unresolved = Resolution(deps.toSet)
- val fetch = Fetch.from(repos, Cache.fetch[Task]())
+ val unresolved = Resolution(deps)
+ val fetch = ResolutionProcess.fetch(repos, coursier.cache.Cache.default.fetch)
val gatherTask = for {
resolved <- unresolved.process.run(fetch)
resolvedSources <- source(resolved).process.run(fetch)
all = resolved.dependencyArtifacts ++ resolvedSources.dependencyArtifacts
gathered <- Gather[Task].gather(all.distinct.map {
- case (dep, art) => Cache.file[Task](art).run.map(dep -> _)
+ case (dep, art) => coursier.cache.Cache.default.file(art).run.map(dep -> _)
})
} yield
gathered
@@ -268,14 +271,14 @@ class BloopImpl(ev: () => Evaluator, wd: Path) extends ExternalModule { outer =>
.mapValues {
_.map {
case (_, mod, _, classifier, file) =>
- BloopConfig.Artifact(mod, classifier, None, file.toPath)
+ BloopConfig.Artifact(mod.value, classifier.map(_.value), None, file.toPath)
}.toList
}
.map {
case ((org, mod, version), artifacts) =>
BloopConfig.Module(
- organization = org,
- name = mod,
+ organization = org.value,
+ name = mod.value,
version = version,
configurations = None,
artifacts = artifacts
diff --git a/contrib/playlib/src/mill/playlib/RouterModule.scala b/contrib/playlib/src/mill/playlib/RouterModule.scala
index abf3082b..5af87839 100644
--- a/contrib/playlib/src/mill/playlib/RouterModule.scala
+++ b/contrib/playlib/src/mill/playlib/RouterModule.scala
@@ -1,7 +1,7 @@
package mill
package playlib
-import coursier.{Cache, MavenRepository}
+import coursier.MavenRepository
import mill.eval.PathRef
import mill.playlib.api.RouteCompilerType
import mill.scalalib.Lib.resolveDependencies
@@ -49,7 +49,7 @@ trait RouterModule extends ScalaModule with Version {
def routerClasspath: T[Agg[PathRef]] = T {
resolveDependencies(
Seq(
- Cache.ivy2Local,
+ coursier.LocalRepositories.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2")
),
Lib.depToDependency(_, scalaVersion()),
diff --git a/contrib/scalapblib/src/ScalaPBModule.scala b/contrib/scalapblib/src/ScalaPBModule.scala
index 57bfdd40..00b977ce 100644
--- a/contrib/scalapblib/src/ScalaPBModule.scala
+++ b/contrib/scalapblib/src/ScalaPBModule.scala
@@ -1,7 +1,7 @@
package mill
package contrib.scalapblib
-import coursier.{Cache, MavenRepository}
+import coursier.MavenRepository
import coursier.core.Version
import mill.define.Sources
import mill.api.PathRef
@@ -51,7 +51,7 @@ trait ScalaPBModule extends ScalaModule {
def scalaPBClasspath: T[Loose.Agg[PathRef]] = T {
resolveDependencies(
Seq(
- Cache.ivy2Local,
+ coursier.LocalRepositories.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2")
),
Lib.depToDependency(_, "2.12.4"),
diff --git a/contrib/twirllib/src/TwirlModule.scala b/contrib/twirllib/src/TwirlModule.scala
index 22e4a43a..72887019 100644
--- a/contrib/twirllib/src/TwirlModule.scala
+++ b/contrib/twirllib/src/TwirlModule.scala
@@ -1,7 +1,7 @@
package mill
package twirllib
-import coursier.{Cache, MavenRepository}
+import coursier.MavenRepository
import mill.define.Sources
import mill.api.PathRef
import mill.scalalib.Lib.resolveDependencies
@@ -22,7 +22,7 @@ trait TwirlModule extends mill.Module {
def twirlClasspath: T[Loose.Agg[PathRef]] = T {
resolveDependencies(
Seq(
- Cache.ivy2Local,
+ coursier.LocalRepositories.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2")
),
Lib.depToDependency(_, "2.12.4"),
diff --git a/main/core/src/eval/Evaluator.scala b/main/core/src/eval/Evaluator.scala
index ebb00ef1..f4ec8ff9 100644
--- a/main/core/src/eval/Evaluator.scala
+++ b/main/core/src/eval/Evaluator.scala
@@ -32,7 +32,7 @@ case class Evaluator(home: os.Path,
externalOutPath: os.Path,
rootModule: mill.define.BaseModule,
log: Logger,
- classLoaderSig: Seq[(Either[String, os.Path], Long)] = Evaluator.classLoaderSig,
+ classLoaderSig: Seq[(Either[String, java.net.URL], Long)] = Evaluator.classLoaderSig,
workerCache: mutable.Map[Segments, (Int, Any)] = mutable.Map.empty,
env : Map[String, String] = Evaluator.defaultEnv,
failFast: Boolean = true
@@ -374,7 +374,7 @@ object Evaluator{
implicit val rw: upickle.default.ReadWriter[Cached] = upickle.default.macroRW
}
case class State(rootModule: mill.define.BaseModule,
- classLoaderSig: Seq[(Either[String, os.Path], Long)],
+ classLoaderSig: Seq[(Either[String, java.net.URL], Long)],
workerCache: mutable.Map[Segments, (Int, Any)],
watched: Seq[(os.Path, Long)])
// This needs to be a ThreadLocal because we need to pass it into the body of
diff --git a/main/core/src/util/JsonFormatters.scala b/main/core/src/util/JsonFormatters.scala
index 830782c6..c1dd18f0 100644
--- a/main/core/src/util/JsonFormatters.scala
+++ b/main/core/src/util/JsonFormatters.scala
@@ -6,5 +6,10 @@ trait JsonFormatters extends mill.api.JsonFormatters{
implicit lazy val modFormat: RW[coursier.Module] = upickle.default.macroRW
implicit lazy val depFormat: RW[coursier.Dependency]= upickle.default.macroRW
implicit lazy val attrFormat: RW[coursier.Attributes] = upickle.default.macroRW
+ implicit lazy val orgFormat: RW[coursier.Organization] = upickle.default.macroRW
+ implicit lazy val modNameFormat: RW[coursier.ModuleName] = upickle.default.macroRW
+ implicit lazy val configurationFormat: RW[coursier.core.Configuration] = upickle.default.macroRW
+ implicit lazy val typeFormat: RW[coursier.core.Type] = upickle.default.macroRW
+ implicit lazy val classifierFormat: RW[coursier.core.Classifier] = upickle.default.macroRW
}
object JsonFormatters extends JsonFormatters
diff --git a/main/src/main/MainRunner.scala b/main/src/main/MainRunner.scala
index c773087c..6705a4b3 100644
--- a/main/src/main/MainRunner.scala
+++ b/main/src/main/MainRunner.scala
@@ -128,7 +128,7 @@ class MainRunner(val config: ammonite.main.Cli.Config,
)
}
- object CustomCodeWrapper extends Preprocessor.CodeWrapper {
+ object CustomCodeWrapper extends ammonite.interp.CodeWrapper {
def apply(code: String,
source: CodeSource,
imports: ammonite.util.Imports,
diff --git a/main/src/main/VisualizeModule.scala b/main/src/main/VisualizeModule.scala
index e950973f..b3d59509 100644
--- a/main/src/main/VisualizeModule.scala
+++ b/main/src/main/VisualizeModule.scala
@@ -2,7 +2,7 @@ package mill.main
import java.util.concurrent.LinkedBlockingQueue
-import coursier.Cache
+import coursier.LocalRepositories
import coursier.core.Repository
import coursier.maven.MavenRepository
import mill.T
@@ -11,7 +11,7 @@ import mill.eval.{PathRef, Result}
object VisualizeModule extends ExternalModule with VisualizeModule {
def repositories = Seq(
- Cache.ivy2Local,
+ LocalRepositories.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2"),
MavenRepository("https://oss.sonatype.org/content/repositories/releases")
)
diff --git a/main/src/modules/Jvm.scala b/main/src/modules/Jvm.scala
index 9ee51aea..9f176974 100644
--- a/main/src/modules/Jvm.scala
+++ b/main/src/modules/Jvm.scala
@@ -8,7 +8,7 @@ import java.nio.file.attribute.PosixFilePermission
import java.util.Collections
import java.util.jar.{JarEntry, JarFile, JarOutputStream}
-import coursier.{Cache, Dependency, Fetch, Repository, Resolution, CachePolicy}
+import coursier.{Dependency, Fetch, Repository, Resolution}
import coursier.util.{Gather, Task}
import geny.Generator
import mill.main.client.InputPumper
@@ -37,7 +37,7 @@ object Jvm {
val commandArgs =
Vector("java") ++
jvmArgs ++
- Vector("-cp", classPath.mkString(File.pathSeparator), mainClass) ++
+ Vector("-cp", classPath.mkString(java.io.File.pathSeparator), mainClass) ++
mainArgs
val workingDir1 = Option(workingDir).getOrElse(ctx.dest)
@@ -60,7 +60,7 @@ object Jvm {
val args =
Vector("java") ++
jvmArgs ++
- Vector("-cp", classPath.mkString(File.pathSeparator), mainClass) ++
+ Vector("-cp", classPath.mkString(java.io.File.pathSeparator), mainClass) ++
mainArgs
if (background) spawnSubprocess(args, envArgs, workingDir)
@@ -409,6 +409,7 @@ object Jvm {
repositories, deps, force, mapDependencies, ctx
)
val errs = resolution.metadataErrors
+
if(errs.nonEmpty) {
val header =
s"""|
@@ -424,13 +425,11 @@ object Jvm {
} else {
def load(artifacts: Seq[coursier.Artifact]) = {
- val logger = None
import scala.concurrent.ExecutionContext.Implicits.global
val loadedArtifacts = Gather[Task].gather(
for (a <- artifacts)
- yield coursier.Cache.file[Task](a, logger = logger).run
- .map(a.isOptional -> _)
+ yield coursier.cache.Cache.default.file(a).run.map(a.optional -> _)
).unsafeRun
val errors = loadedArtifacts.collect {
@@ -442,8 +441,13 @@ object Jvm {
}
val sourceOrJar =
- if (sources) resolution.classifiersArtifacts(Seq("sources"))
- else resolution.artifacts(true)
+ if (sources) {
+ resolution.artifacts(
+ types = Set(coursier.Type.source, coursier.Type.javaSource),
+ classifiers = Some(Seq(coursier.Classifier("sources")))
+ )
+ }
+ else resolution.artifacts()
val (errors, successes) = load(sourceOrJar)
if(errors.isEmpty){
mill.Agg.from(
@@ -463,7 +467,7 @@ object Jvm {
mapDependencies: Option[Dependency => Dependency] = None,
ctx: Option[mill.util.Ctx.Log] = None) = {
- val cachePolicies = CachePolicy.default
+ val cachePolicies = coursier.cache.CacheDefaults.cachePolicies
val forceVersions = force
.map(mapDependencies.getOrElse(identity[Dependency](_)))
@@ -471,20 +475,23 @@ object Jvm {
.toMap
val start = Resolution(
- deps.map(mapDependencies.getOrElse(identity[Dependency](_))).toSet,
+ deps.map(mapDependencies.getOrElse(identity[Dependency](_))).toSeq,
forceVersions = forceVersions,
mapDependencies = mapDependencies
)
val resolutionLogger = ctx.map(c => new TickerResolutionLogger(c))
- val fetches = cachePolicies.map { p =>
- Cache.fetch[Task](
- logger = resolutionLogger,
- cachePolicy = p
- )
+ val cache = resolutionLogger match {
+ case None => coursier.cache.FileCache[Task].withCachePolicies(cachePolicies)
+ case Some(l) =>
+ coursier.cache.FileCache[Task]
+ .withCachePolicies(cachePolicies)
+ .withLogger(l)
}
- val fetch = Fetch.from(repositories, fetches.head, fetches.tail: _*)
+ val fetches = cache.fetchs
+
+ val fetch = coursier.core.ResolutionProcess.fetch(repositories, fetches.head, fetches.tail: _*)
import scala.concurrent.ExecutionContext.Implicits.global
val resolution = start.process.run(fetch).unsafeRun()
@@ -498,7 +505,7 @@ object Jvm {
* In practice, this ticker output gets prefixed with the current target for which
* dependencies are being resolved, using a [[mill.util.ProxyLogger]] subclass.
*/
- class TickerResolutionLogger(ctx: mill.util.Ctx.Log) extends Cache.Logger {
+ class TickerResolutionLogger(ctx: mill.util.Ctx.Log) extends coursier.cache.CacheLogger {
case class DownloadState(var current: Long, var total: Long)
var downloads = new mutable.TreeMap[String,DownloadState]()
var totalDownloadCount = 0
@@ -518,7 +525,7 @@ object Jvm {
ctx.log.ticker(s"Downloading [${downloads.size + finishedCount}/$totalDownloadCount] artifacts (~${sums.current}/${sums.total} bytes)")
}
- override def downloadingArtifact(url: String, file: File): Unit = synchronized {
+ override def downloadingArtifact(url: String): Unit = synchronized {
totalDownloadCount += 1
downloads += url -> DownloadState(0,0)
updateTicker()
diff --git a/main/src/modules/Util.scala b/main/src/modules/Util.scala
index 20f06d8f..8cb72e61 100644
--- a/main/src/modules/Util.scala
+++ b/main/src/modules/Util.scala
@@ -65,7 +65,7 @@ object Util {
repositories,
Seq(
coursier.Dependency(
- coursier.Module("com.lihaoyi", artifact + artifactSuffix),
+ coursier.Module(coursier.Organization("com.lihaoyi"), coursier.ModuleName(artifact + artifactSuffix)),
sys.props("MILL_VERSION")
)
),
diff --git a/scalajslib/src/ScalaJSModule.scala b/scalajslib/src/ScalaJSModule.scala
index 230a3e5c..51b04e6a 100644
--- a/scalajslib/src/ScalaJSModule.scala
+++ b/scalajslib/src/ScalaJSModule.scala
@@ -1,7 +1,6 @@
package mill
package scalajslib
-import coursier.Cache
import coursier.maven.MavenRepository
import mill.eval.{PathRef, Result}
import mill.api.Result.Success
diff --git a/scalalib/api/src/ZincWorkerApi.scala b/scalalib/api/src/ZincWorkerApi.scala
index 70128e8d..790ea274 100644
--- a/scalalib/api/src/ZincWorkerApi.scala
+++ b/scalalib/api/src/ZincWorkerApi.scala
@@ -60,7 +60,7 @@ object Util{
classPath
.find(p => p.toString.endsWith(mavenStylePath) || p.toString.endsWith(ivyStylePath))
- .getOrElse(throw new Exception(s"Cannot find $mavenStylePath or $ivyStylePath"))
+ .getOrElse(throw new Exception(s"Cannot find $mavenStylePath or $ivyStylePath in ${classPath.mkString("[", ", ", "]")}"))
}
private val ReleaseVersion = raw"""(\d+)\.(\d+)\.(\d+)""".r
diff --git a/scalalib/src/Dep.scala b/scalalib/src/Dep.scala
index 714fa21e..59c3be5e 100644
--- a/scalalib/src/Dep.scala
+++ b/scalalib/src/Dep.scala
@@ -9,16 +9,28 @@ case class Dep(dep: coursier.Dependency, cross: CrossVersion, force: Boolean) {
def artifactName(binaryVersion: String, fullVersion: String, platformSuffix: String) = {
val suffix = cross.suffixString(binaryVersion, fullVersion, platformSuffix)
- dep.module.name + suffix
+ dep.module.name.value + suffix
}
def configure(attributes: coursier.Attributes): Dep = copy(dep = dep.copy(attributes = attributes))
def forceVersion(): Dep = copy(force = true)
- def exclude(exclusions: (String, String)*) = copy(dep = dep.copy(exclusions = dep.exclusions ++ exclusions))
+ def exclude(exclusions: (String, String)*) = copy(
+ dep = dep.copy(
+ exclusions =
+ dep.exclusions ++
+ exclusions.map{case (k, v) => (coursier.Organization(k), coursier.ModuleName(v))}
+ )
+ )
def excludeOrg(organizations: String*): Dep = exclude(organizations.map(_ -> "*"): _*)
def excludeName(names: String*): Dep = exclude(names.map("*" -> _): _*)
def toDependency(binaryVersion: String, fullVersion: String, platformSuffix: String) =
- dep.copy(module = dep.module.copy(name = artifactName(binaryVersion, fullVersion, platformSuffix)))
- def withConfiguration(configuration: String): Dep = copy(dep = dep.copy(configuration = configuration))
+ dep.copy(
+ module = dep.module.copy(
+ name = coursier.ModuleName(artifactName(binaryVersion, fullVersion, platformSuffix))
+ )
+ )
+ def withConfiguration(configuration: String): Dep = copy(
+ dep = dep.copy(configuration = coursier.core.Configuration(configuration))
+ )
/**
* If scalaVersion is a Dotty version, replace the cross-version suffix
@@ -49,14 +61,14 @@ case class Dep(dep: coursier.Dependency, cross: CrossVersion, force: Boolean) {
object Dep {
- val DefaultConfiguration = "default(compile)"
+ val DefaultConfiguration = coursier.core.Configuration("default(compile)")
implicit def parse(signature: String): Dep = {
val parts = signature.split(';')
val module = parts.head
val attributes = parts.tail.foldLeft(coursier.Attributes()) { (as, s) =>
s.split('=') match {
- case Array("classifier", v) => as.copy(classifier = v)
+ case Array("classifier", v) => as.copy(classifier = coursier.Classifier(v))
case Array(k, v) => throw new Exception(s"Unrecognized attribute: [$s]")
case _ => throw new Exception(s"Unable to parse attribute specifier: [$s]")
}
@@ -72,7 +84,15 @@ object Dep {
}).configure(attributes = attributes)
}
def apply(org: String, name: String, version: String, cross: CrossVersion, force: Boolean = false): Dep = {
- apply(coursier.Dependency(coursier.Module(org, name), version, DefaultConfiguration), cross, force)
+ apply(
+ coursier.Dependency(
+ coursier.Module(coursier.Organization(org), coursier.ModuleName(name)),
+ version,
+ DefaultConfiguration
+ ),
+ cross,
+ force
+ )
}
implicit def rw: RW[Dep] = macroRW
}
diff --git a/scalalib/src/GenIdeaImpl.scala b/scalalib/src/GenIdeaImpl.scala
index 379ce30b..404a0235 100755
--- a/scalalib/src/GenIdeaImpl.scala
+++ b/scalalib/src/GenIdeaImpl.scala
@@ -1,7 +1,7 @@
package mill.scalalib
import ammonite.runtime.SpecialClassLoader
-import coursier.{Cache, CoursierPaths, Repository}
+import coursier.Repository
import mill.define._
import mill.eval.{Evaluator, PathRef, Result}
import mill.api.Ctx.{Home, Log}
@@ -204,7 +204,7 @@ object GenIdeaImpl {
// Tries to group jars with their poms and sources.
def toResolvedJar(path : os.Path) : Option[ResolvedLibrary] = {
- val inCoursierCache = path.startsWith(os.Path(CoursierPaths.cacheDirectory()))
+ val inCoursierCache = path.startsWith(os.Path(coursier.paths.CoursierPaths.cacheDirectory()))
val isSource = path.last.endsWith("sources.jar")
val isPom = path.ext == "pom"
if (inCoursierCache && (isSource || isPom)) {
diff --git a/scalalib/src/JavaModule.scala b/scalalib/src/JavaModule.scala
index e1fd8628..7b373650 100644
--- a/scalalib/src/JavaModule.scala
+++ b/scalalib/src/JavaModule.scala
@@ -383,8 +383,14 @@ trait JavaModule extends mill.Module with TaskModule { outer =>
Some(mapDependencies())
)
- println(coursier.util.Print.dependencyTree(flattened, resolution,
- printExclusions = false, reverse = inverse))
+ println(
+ coursier.util.Print.dependencyTree(
+ roots = flattened,
+ resolution = resolution,
+ printExclusions = false,
+ reverse = inverse
+ )
+ )
Result.Success()
}
diff --git a/scalalib/src/Lib.scala b/scalalib/src/Lib.scala
index 2706850e..da133d94 100644
--- a/scalalib/src/Lib.scala
+++ b/scalalib/src/Lib.scala
@@ -8,7 +8,7 @@ import java.util.zip.ZipInputStream
import javax.tools.ToolProvider
import ammonite.util.Util
-import coursier.{Cache, Dependency, Fetch, Repository, Resolution}
+import coursier.{Dependency, Fetch, Repository, Resolution}
import mill.scalalib.api.Util.isDotty
import mill.Agg
import mill.eval.{PathRef, Result}
diff --git a/scalalib/src/ScalaModule.scala b/scalalib/src/ScalaModule.scala
index 5fad1664..f45a7e98 100644
--- a/scalalib/src/ScalaModule.scala
+++ b/scalalib/src/ScalaModule.scala
@@ -48,8 +48,13 @@ trait ScalaModule extends JavaModule { outer =>
Set("dotty-library", "dotty-compiler")
else
Set("scala-library", "scala-compiler", "scala-reflect")
- if (!artifacts(d.module.name)) d
- else d.copy(module = d.module.copy(organization = scalaOrganization()), version = scalaVersion())
+ if (!artifacts(d.module.name.value)) d
+ else d.copy(
+ module = d.module.copy(
+ organization = coursier.Organization(scalaOrganization())
+ ),
+ version = scalaVersion()
+ )
}
override def resolveCoursierDependency: Task[Dep => coursier.Dependency] = T.task{
diff --git a/scalalib/src/Versions.scala b/scalalib/src/Versions.scala
index 231eb86b..973b05ed 100644
--- a/scalalib/src/Versions.scala
+++ b/scalalib/src/Versions.scala
@@ -2,7 +2,7 @@ package mill.scalalib
object Versions {
// Keep synchronized with ammonite dependency in core in build.sc
- val ammonite = "1.6.0"
+ val ammonite = "1.6.7"
// Keep synchronized with zinc dependency in scalalib.worker in build.sc
val zinc = "1.2.5"
}
diff --git a/scalalib/src/ZincWorkerModule.scala b/scalalib/src/ZincWorkerModule.scala
index 50d37611..7d81cb97 100644
--- a/scalalib/src/ZincWorkerModule.scala
+++ b/scalalib/src/ZincWorkerModule.scala
@@ -1,6 +1,6 @@
package mill.scalalib
-import coursier.Cache
+
import coursier.maven.MavenRepository
import mill.Agg
import mill.T
@@ -17,7 +17,7 @@ object ZincWorkerModule extends mill.define.ExternalModule with ZincWorkerModule
}
trait ZincWorkerModule extends mill.Module{
def repositories = Seq(
- Cache.ivy2Local,
+ coursier.LocalRepositories.ivy2Local,
MavenRepository("https://repo1.maven.org/maven2"),
MavenRepository("https://oss.sonatype.org/content/repositories/releases")
)
diff --git a/scalalib/src/dependency/metadata/MavenMetadataLoader.scala b/scalalib/src/dependency/metadata/MavenMetadataLoader.scala
index 491911bf..e40337fc 100644
--- a/scalalib/src/dependency/metadata/MavenMetadataLoader.scala
+++ b/scalalib/src/dependency/metadata/MavenMetadataLoader.scala
@@ -1,6 +1,5 @@
package mill.scalalib.dependency.metadata
-import coursier.Cache
import coursier.maven.MavenRepository
import coursier.util.Task
import mill.scalalib.dependency.versions.Version
@@ -8,14 +7,14 @@ import mill.scalalib.dependency.versions.Version
private[dependency] final case class MavenMetadataLoader(mavenRepo: MavenRepository)
extends MetadataLoader {
- private val fetch = Cache.fetch[Task]()
+ private val fetch = coursier.cache.FileCache[Task].fetch
override def getVersions(module: coursier.Module): List[Version] = {
import scala.concurrent.ExecutionContext.Implicits.global
// TODO fallback to 'versionsFromListing' if 'versions' doesn't work? (needs to be made public in coursier first)
val allVersions = mavenRepo.versions(module, fetch).run.unsafeRun
allVersions
- .map(_.available.map(Version(_)))
+ .map(_._1.available.map(Version(_)))
.getOrElse(List.empty)
}
}
diff --git a/scalalib/src/publish/SonatypeHttpApi.scala b/scalalib/src/publish/SonatypeHttpApi.scala
index 12defa93..217d556e 100644
--- a/scalalib/src/publish/SonatypeHttpApi.scala
+++ b/scalalib/src/publish/SonatypeHttpApi.scala
@@ -5,18 +5,10 @@ import java.util.Base64
import scala.concurrent.duration._
-import scalaj.http.{BaseHttp, HttpOptions, HttpRequest, HttpResponse}
-
-object PatientHttp
- extends BaseHttp(
- options = Seq(
- HttpOptions.connTimeout(5.seconds.toMillis.toInt),
- HttpOptions.readTimeout(1.minute.toMillis.toInt),
- HttpOptions.followRedirects(false)
- )
- )
+
class SonatypeHttpApi(uri: String, credentials: String) {
+ val http = requests.Session(connectTimeout = 5000, readTimeout = 1000, maxRedirects = 0)
private val base64Creds = base64(credentials)
@@ -29,12 +21,19 @@ class SonatypeHttpApi(uri: String, credentials: String) {
// https://oss.sonatype.org/nexus-staging-plugin/default/docs/path__staging_profiles.html
def getStagingProfileUri(groupId: String): String = {
val response = withRetry(
- PatientHttp(s"$uri/staging/profiles").headers(commonHeaders))
- .throwError
+ http.get(
+ s"$uri/staging/profiles",
+ headers = commonHeaders
+ )
+ )
+
+ if (!response.is2xx) {
+ throw new Exception(s"$uri/staging/profiles returned ${response.statusCode}")
+ }
val resourceUri =
ujson
- .read(response.body)("data")
+ .read(response.data.text)("data")
.arr
.find(profile =>
groupId.split('.').startsWith(profile("name").str.split('.')))
@@ -47,79 +46,84 @@ class SonatypeHttpApi(uri: String, credentials: String) {
}
def getStagingRepoState(stagingRepoId: String): String = {
- val response = PatientHttp(s"${uri}/staging/repository/${stagingRepoId}")
- .option(HttpOptions.readTimeout(60000))
- .headers(commonHeaders)
- .asString
- .throwError
-
- ujson.read(response.body)("type").str.toString
+ val response = http.get(
+ s"${uri}/staging/repository/${stagingRepoId}",
+ readTimeout = 60000,
+ headers = commonHeaders
+ )
+ ujson.read(response.data.text)("type").str.toString
}
// https://oss.sonatype.org/nexus-staging-plugin/default/docs/path__staging_profiles_-profileIdKey-_start.html
def createStagingRepo(profileUri: String, groupId: String): String = {
- val response = withRetry(PatientHttp(s"${profileUri}/start")
- .headers(commonHeaders)
- .postData(
- s"""{"data": {"description": "fresh staging profile for ${groupId}"}}"""))
- .throwError
+ val response = http.post(
+ s"${profileUri}/start",
+ headers = commonHeaders,
+ data = s"""{"data": {"description": "fresh staging profile for ${groupId}"}}"""
+ )
- ujson.read(response.body)("data")("stagedRepositoryId").str.toString
+ if (!response.is2xx) {
+ throw new Exception(s"$uri/staging/profiles returned ${response.statusCode}")
+ }
+
+ ujson.read(response.data.text)("data")("stagedRepositoryId").str.toString
}
// https://oss.sonatype.org/nexus-staging-plugin/default/docs/path__staging_profiles_-profileIdKey-_finish.html
def closeStagingRepo(profileUri: String, repositoryId: String): Boolean = {
val response = withRetry(
- PatientHttp(s"${profileUri}/finish")
- .headers(commonHeaders)
- .postData(
- s"""{"data": {"stagedRepositoryId": "${repositoryId}", "description": "closing staging repository"}}"""
- ))
+ http.post(
+ s"${profileUri}/finish",
+ headers = commonHeaders,
+ data = s"""{"data": {"stagedRepositoryId": "${repositoryId}", "description": "closing staging repository"}}"""
+ )
+ )
- response.code == 201
+ response.statusCode == 201
}
// https://oss.sonatype.org/nexus-staging-plugin/default/docs/path__staging_profiles_-profileIdKey-_promote.html
def promoteStagingRepo(profileUri: String, repositoryId: String): Boolean = {
val response = withRetry(
- PatientHttp(s"${profileUri}/promote")
- .headers(commonHeaders)
- .postData(
- s"""{"data": {"stagedRepositoryId": "${repositoryId}", "description": "promote staging repository"}}"""
- ))
+ http.post(
+ s"${profileUri}/promote",
+ headers = commonHeaders,
+ data = s"""{"data": {"stagedRepositoryId": "${repositoryId}", "description": "promote staging repository"}}"""
+ )
+ )
- response.code == 201
+ response.statusCode == 201
}
// https://oss.sonatype.org/nexus-staging-plugin/default/docs/path__staging_profiles_-profileIdKey-_drop.html
def dropStagingRepo(profileUri: String, repositoryId: String): Boolean = {
val response = withRetry(
- PatientHttp(s"${profileUri}/drop")
- .headers(commonHeaders)
- .postData(
- s"""{"data": {"stagedRepositoryId": "${repositoryId}", "description": "drop staging repository"}}"""
- ))
-
- response.code == 201
+ http.post(
+ s"${profileUri}/drop",
+ headers = commonHeaders,
+ data = s"""{"data": {"stagedRepositoryId": "${repositoryId}", "description": "drop staging repository"}}"""
+ )
+ )
+ response.statusCode == 201
}
private val uploadTimeout = 5.minutes.toMillis.toInt
- def upload(uri: String, data: Array[Byte]): HttpResponse[String] = {
- PatientHttp(uri)
- .option(HttpOptions.readTimeout(uploadTimeout))
- .method("PUT")
- .headers(
+ def upload(uri: String, data: Array[Byte]): requests.Response = {
+ http.put(
+ uri,
+ readTimeout = uploadTimeout,
+ headers = Seq(
"Content-Type" -> "application/binary",
"Authorization" -> s"Basic ${base64Creds}"
- )
- .put(data)
- .asString
+ ),
+ data = data
+ )
}
- private def withRetry(request: HttpRequest,
- retries: Int = 10): HttpResponse[String] = {
- val resp = request.asString
+ private def withRetry(request: => requests.Response,
+ retries: Int = 10): requests.Response = {
+ val resp = request
if (resp.is5xx && retries > 0) {
Thread.sleep(500)
withRetry(request, retries - 1)
diff --git a/scalalib/src/publish/SonatypePublisher.scala b/scalalib/src/publish/SonatypePublisher.scala
index 6dcadd5b..5ca8f5c1 100644
--- a/scalalib/src/publish/SonatypePublisher.scala
+++ b/scalalib/src/publish/SonatypePublisher.scala
@@ -5,7 +5,6 @@ import java.security.MessageDigest
import mill.api.Logger
import os.Shellable
-import scalaj.http.HttpResponse
class SonatypePublisher(uri: String,
snapshotUri: String,
@@ -105,13 +104,13 @@ class SonatypePublisher(uri: String,
}
}
- private def reportPublishResults(publishResults: Seq[HttpResponse[String]],
+ private def reportPublishResults(publishResults: Seq[requests.Response],
artifacts: Seq[Artifact]) = {
if (publishResults.forall(_.is2xx)) {
log.info(s"Published ${artifacts.map(_.id).mkString(", ")} to Sonatype")
} else {
val errors = publishResults.filterNot(_.is2xx).map { response =>
- s"Code: ${response.code}, message: ${response.body}"
+ s"Code: ${response.statusCode}, message: ${response.data.text}"
}
throw new RuntimeException(
s"Failed to publish ${artifacts.map(_.id).mkString(", ")} to Sonatype. Errors: \n${errors.mkString("\n")}"
diff --git a/scalalib/src/publish/settings.scala b/scalalib/src/publish/settings.scala
index bca81cf0..d2801752 100644
--- a/scalalib/src/publish/settings.scala
+++ b/scalalib/src/publish/settings.scala
@@ -23,13 +23,13 @@ object Artifact {
)
Dependency(
Artifact(
- dep.dep.module.organization,
+ dep.dep.module.organization.value,
name,
dep.dep.version
),
Scope.Compile,
- if (dep.dep.configuration == "") None else Some(dep.dep.configuration),
- dep.dep.exclusions.toList
+ if (dep.dep.configuration == "") None else Some(dep.dep.configuration.value),
+ dep.dep.exclusions.toList.map{case (a, b) => (a.value, b.value)}
)
}
}
diff --git a/scalalib/test/src/GenIdeaTests.scala b/scalalib/test/src/GenIdeaTests.scala
index f8d9a0ed..60c9f9a8 100644
--- a/scalalib/test/src/GenIdeaTests.scala
+++ b/scalalib/test/src/GenIdeaTests.scala
@@ -1,6 +1,5 @@
package mill.scalalib
-import coursier.Cache
import mill._
import mill.util.{TestEvaluator, TestUtil}
import utest._
@@ -57,6 +56,6 @@ object GenIdeaTests extends TestSuite {
private def normaliseLibraryPaths(in: String): String = {
- in.replaceAll(Cache.default.toPath.toAbsolutePath.toString, "COURSIER_HOME")
+ in.replaceAll(coursier.paths.CoursierPaths.cacheDirectory().toString, "COURSIER_HOME")
}
}
diff --git a/scalalib/test/src/ResolveDepsTests.scala b/scalalib/test/src/ResolveDepsTests.scala
index ce905907..94b8adb9 100644
--- a/scalalib/test/src/ResolveDepsTests.scala
+++ b/scalalib/test/src/ResolveDepsTests.scala
@@ -1,6 +1,5 @@
package mill.scalalib
-import coursier.Cache
import coursier.maven.MavenRepository
import mill.api.Result.{Failure, Success}
import mill.eval.{PathRef, Result}
@@ -8,7 +7,7 @@ import mill.api.Loose.Agg
import utest._
object ResolveDepsTests extends TestSuite {
- val repos = Seq(Cache.ivy2Local, MavenRepository("https://repo1.maven.org/maven2"))
+ val repos = Seq(coursier.LocalRepositories.ivy2Local, MavenRepository("https://repo1.maven.org/maven2"))
def evalDeps(deps: Agg[Dep]): Result[Agg[PathRef]] = Lib.resolveDependencies(
repos,
diff --git a/scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala b/scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala
index 4c2206b8..af2ea617 100644
--- a/scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala
+++ b/scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala
@@ -28,8 +28,8 @@
*/
package mill.scalalib.dependency.metadata
-import coursier.Fetch.Content
-import coursier.core.{Artifact, Module, Project, Repository}
+import coursier.Fetch
+import coursier.core.{Artifact, Classifier, Dependency, Module, Project, Repository}
import coursier.ivy.IvyRepository
import coursier.maven.MavenRepository
import coursier.util.{EitherT, Monad}
@@ -57,8 +57,12 @@ object MetadataLoaderFactoryTests extends TestSuite {
}
case class CustomRepository() extends Repository {
- override def find[F[_]](module: Module, version: String, fetch: Content[F])(
- implicit F: Monad[F]): EitherT[F, String, (Artifact.Source, Project)] =
+ override def find[F[_]](module: Module, version: String, fetch: coursier.Repository.Fetch[F])
+ (implicit F: Monad[F]): EitherT[F, String, (Artifact.Source, Project)] =
???
+
+ override def artifacts(dependency: Dependency,
+ project: Project,
+ overrideClassifiers: Option[Seq[Classifier]]) = ???
}
}
diff --git a/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala b/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala
index 7b6e6e36..3b613bcb 100644
--- a/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala
+++ b/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala
@@ -37,7 +37,10 @@ object UpdatesFinderTests extends TestSuite {
available: Seq[String],
allowPreRelease: Boolean) = {
val dependency = coursier.Dependency(
- coursier.Module("com.example.organization", "example-artifact"),
+ coursier.Module(
+ coursier.Organization("com.example.organization"),
+ coursier.ModuleName("example-artifact")
+ ),
current)
val currentVersion = Version(current)
val allVersions = available.map(Version(_)).toSet
diff --git a/scalanativelib/src/ScalaNativeModule.scala b/scalanativelib/src/ScalaNativeModule.scala
index 38525032..b04b00a1 100644
--- a/scalanativelib/src/ScalaNativeModule.scala
+++ b/scalanativelib/src/ScalaNativeModule.scala
@@ -3,7 +3,6 @@ package scalanativelib
import java.net.URLClassLoader
-import coursier.Cache
import coursier.maven.MavenRepository
import mill.define.{Target, Task}
import mill.api.Result
@@ -50,7 +49,7 @@ trait ScalaNativeModule extends ScalaModule { outer =>
Result.Success(Agg(workerPath.split(',').map(p => PathRef(os.Path(p), quick = true)): _*))
else
Lib.resolveDependencies(
- Seq(Cache.ivy2Local, MavenRepository("https://repo1.maven.org/maven2")),
+ Seq(coursier.LocalRepositories.ivy2Local, MavenRepository("https://repo1.maven.org/maven2")),
Lib.depToDependency(_, "2.12.4", ""),
Seq(ivy"com.lihaoyi::mill-scalanativelib-worker-${scalaNativeBinaryVersion()}:${sys.props("MILL_VERSION")}"),
ctx = Some(implicitly[mill.util.Ctx.Log])
@@ -82,7 +81,7 @@ trait ScalaNativeModule extends ScalaModule { outer =>
def bridgeFullClassPath = T {
Lib.resolveDependencies(
- Seq(Cache.ivy2Local, MavenRepository("https://repo1.maven.org/maven2")),
+ Seq(coursier.LocalRepositories.ivy2Local, MavenRepository("https://repo1.maven.org/maven2")),
Lib.depToDependency(_, scalaVersion(), platformSuffix()),
toolsIvyDeps(),
ctx = Some(implicitly[mill.util.Ctx.Log])
@@ -202,7 +201,7 @@ trait TestScalaNativeModule extends ScalaNativeModule with TestModule { testOute
Lib.resolveDependencies(
repositories,
Lib.depToDependency(_, scalaVersion(), ""),
- transitiveIvyDeps().filter(d => d.cross.isBinary && supportedTestFrameworks(d.dep.module.name)),
+ transitiveIvyDeps().filter(d => d.cross.isBinary && supportedTestFrameworks(d.dep.module.name.value)),
ctx = Some(implicitly[mill.util.Ctx.Log])
)
}