diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-04-27 09:38:03 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-04-28 13:34:01 -0400 |
commit | 797855bbad9df5bda34884a4c518b6145130a9bd (patch) | |
tree | 9d0f4a83dffa1f8927e9dca14e1297799bcdb828 /stage2/GitDependency.scala | |
parent | 820e06bc132dc4363a6cc7869ccc96c830e17018 (diff) | |
download | cbt-797855bbad9df5bda34884a4c518b6145130a9bd.tar.gz cbt-797855bbad9df5bda34884a4c518b6145130a9bd.tar.bz2 cbt-797855bbad9df5bda34884a4c518b6145130a9bd.zip |
make cacheabilty of git dependency depend on cacheability of it's build. Also separate out regex, so we can use it to detect cbt version urls later
Diffstat (limited to 'stage2/GitDependency.scala')
-rw-r--r-- | stage2/GitDependency.scala | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/stage2/GitDependency.scala b/stage2/GitDependency.scala index 16423df..333d81c 100644 --- a/stage2/GitDependency.scala +++ b/stage2/GitDependency.scala @@ -5,25 +5,26 @@ import scala.collection.immutable.Seq import org.eclipse.jgit.api._ import org.eclipse.jgit.lib.Ref +object GitDependency{ + val GitUrl = "(git:|https:|file:/)//([^/]+)/(.+)".r +} case class GitDependency( url: String, ref: String // example: git://github.com/cvogt/cbt.git#<some-hash> )(implicit val logger: Logger, classLoaderCache: ClassLoaderCache, context: Context ) extends Dependency{ + import GitDependency._ override def lib = new Lib(logger) - override def canBeCached = true + override def canBeCached = dependency.canBeCached // 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 GitUrl = "(git|https)://([^/]+)/(.+)".r - private val GitUrl( _, domain, path ) = url - - private object dependenciesCache extends Cache[Seq[Dependency]] - def dependencies = dependenciesCache{ - val checkoutDirectory = paths.cbtHome ++ s"/cache/git/$domain/$path/$ref" + def checkout: File = { + val checkoutDirectory = context.cache ++ s"/git/$domain/$path/$ref" if(checkoutDirectory.exists){ logger.git(s"Found existing checkout of $url#$ref in $checkoutDirectory") } else { - logger.git(s"Cloning $url into $checkoutDirectory") val git = Git.cloneRepository() @@ -35,14 +36,16 @@ case class GitDependency( git.checkout() .setName(ref) .call() - } - val managedBuild = lib.loadDynamic( - context.copy( projectDirectory = checkoutDirectory, args = Seq() ) - ) - Seq( managedBuild ) + checkoutDirectory + } + private object dependencyCache extends Cache[Dependency] + def dependency = dependencyCache{ + BuildDependency( context.copy( projectDirectory = checkout ) ) } + def dependencies = Seq(dependency) + def exportedClasspath = ClassPath(Seq()) def exportedJars = Seq() private[cbt] def targetClasspath = exportedClasspath |