diff options
Diffstat (limited to 'project/build/PathConfig.scala')
-rw-r--r-- | project/build/PathConfig.scala | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/project/build/PathConfig.scala b/project/build/PathConfig.scala new file mode 100644 index 0000000000..3410f7c8e5 --- /dev/null +++ b/project/build/PathConfig.scala @@ -0,0 +1,38 @@ +import sbt._ + +/** + * An abstract class for grouping all different paths that are needed to + * compile the a CompilationStep + * @author Grégory Moix + */ +abstract class PathConfig { + def projectRoot:Path + def sources:Path + def analysis:Path + def output:Path +} + +/** + * + */ + +class PathLayout(val projectRoot:Path, val outputDir:Path) { + lazy val srcDir = projectRoot / "src" + lazy val classesOutput = outputDir / " classes" + lazy val analysisOutput = outputDir / "analysis" + + /** + * An utility method to easily create StandardPathConfig from a given path layout + */ + def /(name:String)= new StandardPathConfig(this, name) +} + +/** + * + */ +class StandardPathConfig(layout: PathLayout, name:String) extends PathConfig{ + lazy val projectRoot = layout.projectRoot + lazy val sources = layout.srcDir / name + lazy val analysis = layout.analysisOutput / name + lazy val output = layout.classesOutput / name +} |