diff options
-rw-r--r-- | stage1/Stage1Lib.scala | 9 | ||||
-rw-r--r-- | stage1/cbt.scala | 6 | ||||
-rw-r--r-- | stage2/Lib.scala | 4 |
3 files changed, 10 insertions, 9 deletions
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala index 7f8f600..c42ee12 100644 --- a/stage1/Stage1Lib.scala +++ b/stage1/Stage1Lib.scala @@ -86,12 +86,6 @@ class Stage1Lib( logger: Logger ) extends BaseLib{ } } - def listFilesRecursive(f: File): Seq[File] = { - f +: ( - if( f.isDirectory ) f.listFiles.flatMap(listFilesRecursive).toVector else Seq[File]() - ) - } - // ========== compilation / execution ========== def runMain( cls: String, args: Seq[String], classLoader: ClassLoader, fakeInstance: Boolean = false ): ExitCode = { @@ -149,7 +143,8 @@ class Stage1Lib( logger: Logger ) extends BaseLib{ /** Given a directory corresponding to the root package, iterate the names of all classes derived from the class files found */ def iterateClassNames( classesRootDirectory: File ): Seq[String] = - listFilesRecursive(classesRootDirectory) + classesRootDirectory + .listRecursive .filter(_.isFile) .map(_.getPath) .collect{ diff --git a/stage1/cbt.scala b/stage1/cbt.scala index 8b6ebd8..5d2e2f5 100644 --- a/stage1/cbt.scala +++ b/stage1/cbt.scala @@ -28,6 +28,12 @@ object `package`{ def /(s: String): File = new File( file, s ) def parent = lib.realpath(file ++ "/..") def string = file.toString + + def listRecursive: Seq[File] = { + file +: ( + if( file.isDirectory ) file.listFiles.flatMap(_.listRecursive).toVector else Seq[File]() + ) + } } implicit class URLExtensionMethods( url: URL ){ def ++( s: String ): URL = new URL( url.toString ++ s ) diff --git a/stage2/Lib.scala b/stage2/Lib.scala index b6187ce..d6c827f 100644 --- a/stage2/Lib.scala +++ b/stage2/Lib.scala @@ -283,7 +283,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ def sourceFiles( sources: Seq[File], sourceFileFilter: File => Boolean ): Seq[File] = { for { base <- sources.filter(_.exists).map(lib.realpath) - file <- lib.listFilesRecursive(base) if file.isFile && sourceFileFilter(file) + file <- base.listRecursive if file.isFile && sourceFileFilter(file) } yield file } @@ -309,7 +309,7 @@ final class Lib(val logger: Logger) extends Stage1Lib(logger){ try{ val names = for { base <- files.filter(_.exists).map(realpath) - file <- listFilesRecursive(base) if file.isFile + file <- base.listRecursive if file.isFile } yield { val strip = Some( base ).filter(_.isDirectory) ++ stripBaseCanonical val name = strip.foldLeft( file.getCanonicalPath )( |