From 5388bb116834196e1b0a9bd9f2622f36e842b3be Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Sun, 19 Mar 2017 19:52:56 -0400 Subject: better error than NullPointerException when directory does not exist --- build/build.scala | 2 +- stage1/Stage1.scala | 4 ++-- stage1/cbt.scala | 1 + stage2/BasicBuild.scala | 4 ++-- stage2/Lib.scala | 2 +- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/build/build.scala b/build/build.scala index 141b0a4..496acdc 100644 --- a/build/build.scala +++ b/build/build.scala @@ -17,5 +17,5 @@ class Build(val context: Context) extends Shared with PublishLocal{ override def sources = Seq( "nailgun_launcher", "stage1", "stage2", "compatibility" - ).map( projectDirectory / _ ).flatMap( _.listFiles ) + ).map( projectDirectory / _ ).flatMap( _.listOrFail ) } diff --git a/stage1/Stage1.scala b/stage1/Stage1.scala index 62cab87..c243cc0 100644 --- a/stage1/Stage1.scala +++ b/stage1/Stage1.scala @@ -92,8 +92,8 @@ object Stage1{ val stage2sourceFiles = ( stage2.listFiles - ++ (stage2 / "plugins").listFiles - ++ (cbtHome / "libraries" / "eval").listFiles + ++ (stage2 / "plugins").listOrFail + ++ (cbtHome / "libraries" / "eval").listOrFail ).filter(_.isFile).filter(_.toString.endsWith(".scala")) val cls = this.getClass.getClassLoader.loadClass("cbt.NailgunLauncher") diff --git a/stage1/cbt.scala b/stage1/cbt.scala index b97ad44..8cba9df 100644 --- a/stage1/cbt.scala +++ b/stage1/cbt.scala @@ -62,6 +62,7 @@ object `package`{ file.delete } + def listOrFail: Seq[File] = Option( file.listFiles ).getOrElse( throw new Exception( "no such file: " + file ) ).toVector def listRecursive: Seq[File] = { file +: ( if( file.isDirectory ) file.listFiles.flatMap(_.listRecursive).toVector else Seq[File]() diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index 491cdba..fcda629 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -96,7 +96,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with SbtDep def sources: Seq[File] = ( Seq(defaultSourceDirectory) ++ generatedSources - ++ projectDirectory.listFiles.toVector.filter(sourceFileFilter) + ++ projectDirectory.listOrFail.toVector.filter(sourceFileFilter) ) /** Which file endings to consider being source files. */ @@ -130,7 +130,7 @@ trait BaseBuild extends BuildInterface with DependencyImplementation with SbtDep def localJars: Seq[File] = Seq(projectDirectory ++ "/lib") .filter(_.exists) - .flatMap(_.listFiles) + .flatMap(_.listOrFail) .filter(_.toString.endsWith(".jar")) override def dependencyClasspath : ClassPath = super.dependencyClasspath diff --git a/stage2/Lib.scala b/stage2/Lib.scala index bb59604..04e68f1 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -202,7 +202,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ def depthFirstFileStream(file: File): Vector[File] = { ( if (file.isDirectory) { - file.listFiles.toVector.flatMap(depthFirstFileStream(_)) + file.listOrFail.toVector.flatMap(depthFirstFileStream(_)) } else Vector() ) :+ file } -- cgit v1.2.3