2009-08-17 16:51:43 +02:00
|
|
|
/* sbt -- Simple Build Tool
|
|
|
|
|
* Copyright 2008, 2009 Mark Harrah
|
|
|
|
|
*/
|
|
|
|
|
package xsbt
|
|
|
|
|
|
|
|
|
|
import java.io.File
|
|
|
|
|
|
|
|
|
|
trait PathMapper extends NotNull
|
|
|
|
|
{
|
|
|
|
|
def apply(file: File): String
|
|
|
|
|
}
|
2009-08-26 14:38:20 +02:00
|
|
|
class PMapper(f: File => String) extends PathMapper
|
|
|
|
|
{
|
|
|
|
|
def apply(file: File) = f(file)
|
|
|
|
|
}
|
2009-08-17 16:51:43 +02:00
|
|
|
object PathMapper
|
|
|
|
|
{
|
2009-08-26 14:38:20 +02:00
|
|
|
val basic = new PMapper(_.getPath)
|
|
|
|
|
def relativeTo(base: File) = new PMapper(file => FileUtilities.relativize(base, file).getOrElse(file.getPath))
|
|
|
|
|
val flat = new PMapper(_.getName)
|
|
|
|
|
def apply(f: File => String) = new PMapper(f)
|
2009-08-17 16:51:43 +02:00
|
|
|
}
|
2009-08-26 14:38:20 +02:00
|
|
|
|
|
|
|
|
trait FileMapper extends NotNull
|
|
|
|
|
{
|
|
|
|
|
def apply(file: File): File
|
|
|
|
|
}
|
|
|
|
|
class FMapper(f: File => File) extends FileMapper
|
2009-08-17 16:51:43 +02:00
|
|
|
{
|
|
|
|
|
def apply(file: File) = f(file)
|
2009-08-26 14:38:20 +02:00
|
|
|
}
|
|
|
|
|
object FileMapper
|
|
|
|
|
{
|
|
|
|
|
def basic(newDirectory: File) = new FMapper(file => new File(newDirectory, file.getPath))
|
|
|
|
|
def rebase(oldBase: File, newBase: File) =
|
|
|
|
|
new FMapper(file => new File(newBase, FileUtilities.relativize(oldBase, file).getOrElse(error(file + " not a descendent of " + oldBase))))
|
|
|
|
|
def flat(newDirectory: File) = new FMapper(file => new File(newDirectory, file.getName))
|
|
|
|
|
def apply(f: File => File) = new FMapper(f)
|
2009-08-17 16:51:43 +02:00
|
|
|
}
|