diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-09 02:29:44 +0000 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2017-02-09 21:44:23 -0500 |
commit | bee13ba7a4458482ce00a5c6bae4cd64328c4e5e (patch) | |
tree | 3eac3a3dee9fe2645673a7df09915d2f77f0b781 /stage2/GitDependency.scala | |
parent | 00157c927255a9c885287a7e16670561e8e6391e (diff) | |
download | cbt-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.scala | 10 |
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("") |