aboutsummaryrefslogtreecommitdiff
path: root/stage1/Stage1Lib.scala
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2016-04-04 00:46:06 -0400
committerJan Christopher Vogt <oss.nsp@cvogt.org>2016-04-04 00:46:06 -0400
commit2d1a51d64aaca9ad00057a5bb822a50158b67429 (patch)
tree8fb5377f275bb639dd5a25ec5dcb37148f0faf10 /stage1/Stage1Lib.scala
parent2b52377b6f6fbbc45ef705f33088e8e414a77105 (diff)
parent6e65120d99b6480b4d2577bde61e8754a60a2ee6 (diff)
downloadcbt-2d1a51d64aaca9ad00057a5bb822a50158b67429.tar.gz
cbt-2d1a51d64aaca9ad00057a5bb822a50158b67429.tar.bz2
cbt-2d1a51d64aaca9ad00057a5bb822a50158b67429.zip
Merge pull request #99 from cvogt/maven-repos
Support for alternative maven resolvers
Diffstat (limited to 'stage1/Stage1Lib.scala')
-rw-r--r--stage1/Stage1Lib.scala77
1 files changed, 50 insertions, 27 deletions
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala
index 105fe3e..da9f8dd 100644
--- a/stage1/Stage1Lib.scala
+++ b/stage1/Stage1Lib.scala
@@ -31,7 +31,7 @@ object CatchTrappedExitCode{
}
}
-case class Context( cwd: File, args: Seq[String], logger: Logger, classLoaderCache: ClassLoaderCache )
+case class Context( cwd: File, args: Seq[String], logger: Logger, cbtHasChanged: Boolean, classLoaderCache: ClassLoaderCache )
class BaseLib{
def realpath(name: File) = new File(Paths.get(name.getAbsolutePath).normalize.toString)
@@ -56,23 +56,35 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{
def blue(string: String) = scala.Console.BLUE++string++scala.Console.RESET
def green(string: String) = scala.Console.GREEN++string++scala.Console.RESET
- def download(urlString: URL, target: File, sha1: Option[String]){
- val incomplete = Paths.get( target.string ++ ".incomplete" );
- if( !target.exists ){
- target.getParentFile.mkdirs
- logger.resolver(blue("downloading ") ++ urlString.string)
- logger.resolver(blue("to ") ++ target.string)
- val stream = urlString.openStream
- Files.copy(stream, incomplete, StandardCopyOption.REPLACE_EXISTING)
- sha1.foreach{
- hash =>
- val expected = hash
- val actual = this.sha1(Files.readAllBytes(incomplete))
- assert( expected == actual, s"$expected == $actual" )
- logger.resolver( green("verified") ++ " checksum for " ++ target.string)
+ def download(url: URL, target: File, sha1: Option[String]): Boolean = {
+ if( target.exists ){
+ true
+ } else {
+ val incomplete = Paths.get( target.string ++ ".incomplete" );
+ val connection = url.openConnection.asInstanceOf[HttpURLConnection]
+ if(connection.getResponseCode != HttpURLConnection.HTTP_OK){
+ logger.resolver(blue("not found: ") ++ url.string)
+ false
+ } else {
+ logger.resolver(blue("downloading ") ++ url.string)
+ logger.resolver(blue("to ") ++ target.string)
+ target.getParentFile.mkdirs
+ val stream = connection.getInputStream
+ try{
+ Files.copy(stream, incomplete, StandardCopyOption.REPLACE_EXISTING)
+ } finally {
+ stream.close()
+ }
+ sha1.foreach{
+ hash =>
+ val expected = hash
+ val actual = this.sha1(Files.readAllBytes(incomplete))
+ assert( expected == actual, s"$expected == $actual" )
+ logger.resolver( green("verified") ++ " checksum for " ++ target.string)
+ }
+ Files.move(incomplete, Paths.get(target.string), StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
+ true
}
- stream.close
- Files.move(incomplete, Paths.get(target.string), StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);
}
}
@@ -137,26 +149,37 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{
None
}else{
if( needsRecompile ){
- val zinc = JavaDependency("com.typesafe.zinc","zinc", zincVersion)
+ import MavenRepository.central
+ val zinc = central.resolveOne(MavenDependency("com.typesafe.zinc","zinc", zincVersion))
val zincDeps = zinc.transitiveDependencies
val sbtInterface =
zincDeps
- .collect{ case d @ JavaDependency( "com.typesafe.sbt", "sbt-interface", _, Classifier.none ) => d }
+ .collect{ case d @
+ BoundMavenDependency(
+ MavenDependency( "com.typesafe.sbt", "sbt-interface", _, Classifier.none),
+ _
+ ) => d
+ }
.headOption
.getOrElse( throw new Exception(s"cannot find sbt-interface in zinc $zincVersion dependencies: "++zincDeps.toString) )
.jar
val compilerInterface =
zincDeps
- .collect{ case d @ JavaDependency( "com.typesafe.sbt", "compiler-interface", _, Classifier.sources ) => d }
+ .collect{ case d @
+ BoundMavenDependency(
+ MavenDependency( "com.typesafe.sbt", "compiler-interface", _, Classifier.sources),
+ _
+ ) => d
+ }
.headOption
.getOrElse( throw new Exception(s"cannot find compiler-interface in zinc $zincVersion dependencies: "++zincDeps.toString) )
.jar
- val scalaLibrary = JavaDependency("org.scala-lang","scala-library",scalaVersion).jar
- val scalaReflect = JavaDependency("org.scala-lang","scala-reflect",scalaVersion).jar
- val scalaCompiler = JavaDependency("org.scala-lang","scala-compiler",scalaVersion).jar
+ val scalaLibrary = central.resolveOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)).jar
+ val scalaReflect = central.resolveOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)).jar
+ val scalaCompiler = central.resolveOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)).jar
val start = System.currentTimeMillis
@@ -212,9 +235,9 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{
def ScalaDependency(
groupId: String, artifactId: String, version: String, classifier: Classifier = Classifier.none,
- scalaVersion: String
+ scalaMajorVersion: String
) =
- JavaDependency(
- groupId, artifactId ++ "_" ++ scalaVersion, version, classifier
+ MavenDependency(
+ groupId, artifactId ++ "_" ++ scalaMajorVersion, version, classifier
)
-} \ No newline at end of file
+}