diff options
author | Christopher Vogt <oss.nsp@cvogt.org> | 2016-06-01 23:10:40 -0400 |
---|---|---|
committer | Christopher Vogt <oss.nsp@cvogt.org> | 2016-06-15 01:24:46 -0400 |
commit | 81a8db46ce92f6f0b7b2c2661ae8f0a2f38e5adc (patch) | |
tree | 2510223d526d983590ff5062a938f247231d90e1 /stage2/GitDependency.scala | |
parent | ee439cdc67034d35762d54a6d87d51844fcf6dde (diff) | |
download | cbt-81a8db46ce92f6f0b7b2c2661ae8f0a2f38e5adc.tar.gz cbt-81a8db46ce92f6f0b7b2c2661ae8f0a2f38e5adc.tar.bz2 cbt-81a8db46ce92f6f0b7b2c2661ae8f0a2f38e5adc.zip |
support for git dependencies on projects in subdirectories
Diffstat (limited to 'stage2/GitDependency.scala')
-rw-r--r-- | stage2/GitDependency.scala | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/stage2/GitDependency.scala b/stage2/GitDependency.scala index 174f9ff..0457c3c 100644 --- a/stage2/GitDependency.scala +++ b/stage2/GitDependency.scala @@ -9,7 +9,7 @@ object GitDependency{ val GitUrl = "(git:|https:|file:/)//([^/]+)/(.+)".r } case class GitDependency( - url: String, ref: String // example: git://github.com/cvogt/cbt.git#<some-hash> + url: String, ref: String, subDirectory: Option[String] = None // example: git://github.com/cvogt/cbt.git#<some-hash> )(implicit val logger: Logger, classLoaderCache: ClassLoaderCache, context: Context ) extends DependencyImplementation{ import GitDependency._ override def lib = new Lib(logger) @@ -18,8 +18,8 @@ case class GitDependency( // See http://www.codeaffine.com/2014/12/09/jgit-authentication/ private val GitUrl( _, domain, path ) = url - - def checkout: File = { + private object checkoutCache extends Cache[File] + def checkout: File = checkoutCache{ val checkoutDirectory = context.cache ++ s"/git/$domain/$path/$ref" if(checkoutDirectory.exists){ logger.git(s"Found existing checkout of $url#$ref in $checkoutDirectory") @@ -38,9 +38,13 @@ case class GitDependency( } checkoutDirectory } - private object dependencyCache extends Cache[Dependency] + private object dependencyCache extends Cache[DependencyImplementation] def dependency = dependencyCache{ - BuildDependency( context.copy( projectDirectory = checkout ) ) + BuildDependency( + context.copy( + projectDirectory = checkout ++ subDirectory.map("/" ++ _).getOrElse("") + ) + ) } def dependencies = Seq(dependency) |