diff options
author | Jan Christopher Vogt <oss.nsp@cvogt.org> | 2016-08-29 13:06:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-29 13:06:06 -0400 |
commit | 55e5bad90af19376e3bacbedaea8702456f61d39 (patch) | |
tree | 71070e56bca1e1634129dae2eb892705afd10afb /stage2 | |
parent | 4696456fed668bcce279ecf28ae02ee43d32f741 (diff) | |
parent | c4fed700bf1ee86e34897831824a29b4e12c4c7f (diff) | |
download | cbt-55e5bad90af19376e3bacbedaea8702456f61d39.tar.gz cbt-55e5bad90af19376e3bacbedaea8702456f61d39.tar.bz2 cbt-55e5bad90af19376e3bacbedaea8702456f61d39.zip |
Merge pull request #214 from cvogt/git_work
private git repos
Diffstat (limited to 'stage2')
-rw-r--r-- | stage2/GitDependency.scala | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/stage2/GitDependency.scala b/stage2/GitDependency.scala index 6510ede..8faabc5 100644 --- a/stage2/GitDependency.scala +++ b/stage2/GitDependency.scala @@ -1,7 +1,9 @@ package cbt import java.io._ +import java.nio.file.Files.readAllBytes import java.net._ import org.eclipse.jgit.api._ +import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider import org.eclipse.jgit.lib.Ref object GitDependency{ @@ -17,6 +19,8 @@ case class GitDependency( // 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] def checkout: File = checkoutCache{ val checkoutDirectory = context.cache ++ s"/git/$domain/$path/$ref" @@ -24,16 +28,28 @@ case class GitDependency( logger.git(s"Found existing checkout of $url#$ref in $checkoutDirectory") } else { logger.git(s"Cloning $url into $checkoutDirectory") - val git = - Git.cloneRepository() + val git = { + val _git = Git + .cloneRepository() .setURI(url) .setDirectory(checkoutDirectory) - .call() + if(!credentialsFile.exists){ + _git + } else { + val (user, password) = { + // TODO: implement safer method than reading credentials from plain text file + val c = new String(readAllBytes(credentialsFile.toPath)).split("\n").head.trim.split(":") + (c(0), c.drop(1).mkString(":")) + } + _git.setCredentialsProvider( new UsernamePasswordCredentialsProvider(user, password) ) + } + }.call() + logger.git(s"Checking out ref $ref") git.checkout() - .setName(ref) - .call() + .setName(ref) + .call() } checkoutDirectory } |