mirror of https://github.com/sbt/sbt.git
delete empty parent directories of deleted class files. fixes #387
This commit is contained in:
parent
b865d88060
commit
868196e652
|
|
@ -143,7 +143,7 @@ object Incremental
|
|||
|
||||
def prune(invalidatedSrcs: Set[File], previous: Analysis): Analysis =
|
||||
{
|
||||
IO.delete( invalidatedSrcs.flatMap(previous.relations.products) )
|
||||
IO.deleteFilesEmptyDirs( invalidatedSrcs.flatMap(previous.relations.products) )
|
||||
previous -- invalidatedSrcs
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
package a.pkgName
|
||||
|
||||
object Test
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
package pkgName
|
||||
|
||||
object Test
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
package a
|
||||
|
||||
import pkgName.Test
|
||||
|
||||
object Use {
|
||||
val x = Test
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
$ copy-file changes/Define1.scala Define.scala
|
||||
$ copy-file changes/Use.scala Use.scala
|
||||
> compile
|
||||
|
||||
$ copy-file changes/Define2.scala Define.scala
|
||||
> compile
|
||||
|
|
@ -304,6 +304,25 @@ object IO
|
|||
/** Deletes each file or directory (recursively) in `files`.*/
|
||||
def delete(files: Iterable[File]): Unit = files.foreach(delete)
|
||||
|
||||
/** Deletes each file or directory in `files` recursively. Any empty parent directories are deleted, recursively.*/
|
||||
def deleteFilesEmptyDirs(files: Iterable[File]): Unit =
|
||||
{
|
||||
def isEmptyDirectory(dir: File) = dir.isDirectory && listFiles(dir).isEmpty
|
||||
def parents(fs: Set[File]) = fs.map(_.getParentFile)
|
||||
def deleteEmpty(dirs: Set[File])
|
||||
{
|
||||
val empty = dirs filter isEmptyDirectory
|
||||
if(empty.nonEmpty) // looks funny, but this is true if at least one of `dirs` is an empty directory
|
||||
{
|
||||
empty foreach { _.delete() }
|
||||
deleteEmpty(parents(empty))
|
||||
}
|
||||
}
|
||||
|
||||
delete(files)
|
||||
deleteEmpty(parents(files.toSet))
|
||||
}
|
||||
|
||||
/** Deletes `file`, recursively if it is a directory. */
|
||||
def delete(file: File)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue