mirror of https://github.com/sbt/sbt.git
Move back CachePolicy to namespace coursier.core
This commit is contained in:
parent
6f68abc4d6
commit
e2c654eb88
|
|
@ -4,7 +4,7 @@ package cli
|
|||
import java.io.File
|
||||
|
||||
import caseapp._
|
||||
import coursier.core.{MavenRepository, Parse, Repository}, Repository.CachePolicy
|
||||
import coursier.core.{ MavenRepository, Parse, Repository, CachePolicy }
|
||||
|
||||
import scalaz.concurrent.Task
|
||||
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ case class MavenRepository(
|
|||
|
||||
def fetch(
|
||||
artifact: Artifact,
|
||||
cachePolicy: Repository.CachePolicy
|
||||
cachePolicy: CachePolicy
|
||||
): EitherT[Task, String, String] = {
|
||||
|
||||
val url0 = root + artifact.url
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ case class MavenRepository(
|
|||
|
||||
def fetch(
|
||||
artifact: Artifact,
|
||||
cachePolicy: Repository.CachePolicy
|
||||
cachePolicy: CachePolicy
|
||||
): EitherT[Task, String, String] = {
|
||||
|
||||
def locally(eitherFile: String \/ File) = {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
package coursier.core
|
||||
|
||||
import coursier.core.Repository.CachePolicy
|
||||
|
||||
import scalaz.{ -\/, \/-, \/, EitherT }
|
||||
import scalaz.concurrent.Task
|
||||
|
||||
|
|
@ -11,7 +9,7 @@ trait Repository {
|
|||
def find(
|
||||
module: Module,
|
||||
version: String,
|
||||
cachePolicy: Repository.CachePolicy = Repository.CachePolicy.Default
|
||||
cachePolicy: CachePolicy = CachePolicy.Default
|
||||
): EitherT[Task, String, (Artifact.Source, Project)]
|
||||
}
|
||||
|
||||
|
|
@ -72,43 +70,6 @@ object Repository {
|
|||
}
|
||||
}
|
||||
|
||||
sealed trait CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T]
|
||||
|
||||
def saving[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T])
|
||||
(save: => T => Task[Unit]): Task[E \/ T] =
|
||||
apply(local)(CachePolicy.saving(remote)(save))
|
||||
}
|
||||
|
||||
object CachePolicy {
|
||||
def saving[E,T](remote: => Task[E \/ T])
|
||||
(save: T => Task[Unit]): Task[E \/ T] = {
|
||||
for {
|
||||
res <- remote
|
||||
_ <- res.fold(_ => Task.now(()), t => save(t))
|
||||
} yield res
|
||||
}
|
||||
|
||||
case object Default extends CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T] =
|
||||
local
|
||||
.flatMap(res => if (res.isLeft) remote else Task.now(res))
|
||||
}
|
||||
case object LocalOnly extends CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T] =
|
||||
local
|
||||
}
|
||||
case object ForceDownload extends CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T] =
|
||||
remote
|
||||
}
|
||||
}
|
||||
|
||||
implicit class ArtifactExtensions(val underlying: Artifact) extends AnyVal {
|
||||
def withDefaultChecksums: Artifact =
|
||||
underlying.copy(extra = underlying.extra ++ Seq(
|
||||
|
|
@ -370,4 +331,41 @@ abstract class BaseMavenRepository(
|
|||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
sealed trait CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T]
|
||||
|
||||
def saving[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T])
|
||||
(save: => T => Task[Unit]): Task[E \/ T] =
|
||||
apply(local)(CachePolicy.saving(remote)(save))
|
||||
}
|
||||
|
||||
object CachePolicy {
|
||||
def saving[E,T](remote: => Task[E \/ T])
|
||||
(save: T => Task[Unit]): Task[E \/ T] = {
|
||||
for {
|
||||
res <- remote
|
||||
_ <- res.fold(_ => Task.now(()), t => save(t))
|
||||
} yield res
|
||||
}
|
||||
|
||||
case object Default extends CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T] =
|
||||
local
|
||||
.flatMap(res => if (res.isLeft) remote else Task.now(res))
|
||||
}
|
||||
case object LocalOnly extends CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T] =
|
||||
local
|
||||
}
|
||||
case object ForceDownload extends CachePolicy {
|
||||
def apply[E,T](local: => Task[E \/ T])
|
||||
(remote: => Task[E \/ T]): Task[E \/ T] =
|
||||
remote
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,9 @@ package object coursier {
|
|||
type Scope = core.Scope
|
||||
val Scope: core.Scope.type = core.Scope
|
||||
|
||||
type CachePolicy = core.CachePolicy
|
||||
val CachePolicy: core.CachePolicy.type = core.CachePolicy
|
||||
|
||||
type Repository = core.Repository
|
||||
val Repository: core.Repository.type = core.Repository
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class TestRepository(projects: Map[(Module, String), Project]) extends Repositor
|
|||
val source = new core.Artifact.Source {
|
||||
def artifacts(dependency: Dependency, project: Project) = ???
|
||||
}
|
||||
def find(module: Module, version: String, cachePolicy: Repository.CachePolicy) =
|
||||
def find(module: Module, version: String, cachePolicy: CachePolicy) =
|
||||
EitherT(Task.now(
|
||||
projects.get((module, version)).map((source, _)).toRightDisjunction("Not found")
|
||||
))
|
||||
|
|
|
|||
|
|
@ -2,8 +2,6 @@ package coursier
|
|||
|
||||
import java.net.{ URI, URL }
|
||||
|
||||
import coursier.core.Repository.CachePolicy
|
||||
|
||||
import scala.annotation.tailrec
|
||||
import scalaz.{ -\/, \/-, \/, EitherT }
|
||||
import scalaz.concurrent.Task
|
||||
|
|
|
|||
Loading…
Reference in New Issue