aboutsummaryrefslogtreecommitdiff
path: root/stage2/GitDependency.scala
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2017-02-09 02:29:44 +0000
committerChristopher Vogt <oss.nsp@cvogt.org>2017-02-09 21:44:23 -0500
commitbee13ba7a4458482ce00a5c6bae4cd64328c4e5e (patch)
tree3eac3a3dee9fe2645673a7df09915d2f77f0b781 /stage2/GitDependency.scala
parent00157c927255a9c885287a7e16670561e8e6391e (diff)
downloadcbt-bee13ba7a4458482ce00a5c6bae4cd64328c4e5e.tar.gz
cbt-bee13ba7a4458482ce00a5c6bae4cd64328c4e5e.tar.bz2
cbt-bee13ba7a4458482ce00a5c6bae4cd64328c4e5e.zip
memoize task results across classes within a single run
Diffstat (limited to 'stage2/GitDependency.scala')
-rw-r--r--stage2/GitDependency.scala10
1 files changed, 4 insertions, 6 deletions
diff --git a/stage2/GitDependency.scala b/stage2/GitDependency.scala
index 650fd09..e27eff9 100644
--- a/stage2/GitDependency.scala
+++ b/stage2/GitDependency.scala
@@ -15,15 +15,14 @@ case class GitDependency(
)(implicit val logger: Logger, classLoaderCache: ClassLoaderCache, context: Context ) extends DependencyImplementation{
import GitDependency._
override def lib = new Lib(logger)
-
+ def moduleKey = this.getClass.getName ++ "(" ++ url ++ subDirectory.map("/" ++ _).getOrElse("") ++ "#" ++ ref ++ ")"
+ def transientCache = context.transientCache
// TODO: add support for authentication via ssh and/or https
// See http://www.codeaffine.com/2014/12/09/jgit-authentication/
private val GitUrl( _, domain, path ) = url
private val credentialsFile = context.projectDirectory ++ "/git.login"
- private object checkoutCache extends Cache[File]
-
private def authenticate(_git: CloneCommand) =
if(!credentialsFile.exists){
_git
@@ -36,7 +35,7 @@ case class GitDependency(
_git.setCredentialsProvider( new UsernamePasswordCredentialsProvider(user, password) )
}
- def checkout: File = checkoutCache{
+ def checkout: File = taskCache[GitDependency]("checkout").memoize{
val checkoutDirectory = context.cache ++ s"/git/$domain/$path/$ref"
val _git = if(checkoutDirectory.exists){
logger.git(s"Found existing checkout of $url#$ref in $checkoutDirectory")
@@ -65,8 +64,7 @@ case class GitDependency(
assert( actualRef == ref, s"actual ref '$actualRef' does not match expected ref '$ref'")
checkoutDirectory
}
- private object dependencyCache extends Cache[DependencyImplementation]
- def dependency = dependencyCache{
+ def dependency = taskCache[GitDependency]("dependency").memoize{
DirectoryDependency(
context.copy(
projectDirectory = checkout ++ subDirectory.map("/" ++ _).getOrElse("")