aboutsummaryrefslogtreecommitdiff
path: root/stage2/GitDependency.scala
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-04-27 09:38:03 -0400
committerChristopher Vogt <oss.nsp@cvogt.org>2016-04-28 13:34:01 -0400
commit797855bbad9df5bda34884a4c518b6145130a9bd (patch)
tree9d0f4a83dffa1f8927e9dca14e1297799bcdb828 /stage2/GitDependency.scala
parent820e06bc132dc4363a6cc7869ccc96c830e17018 (diff)
downloadcbt-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.scala29
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