File: PathConfig.scala

package info (click to toggle)
scala 2.9.2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 67,252 kB
  • ctags: 6,602
  • sloc: java: 27,488; xml: 4,412; python: 2,297; sh: 734; makefile: 16; ansic: 6
file content (43 lines) | stat: -rw-r--r-- 1,092 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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
}

object PathConfig {
  val classes = "classes"
  val analysis = "analysis"
}

trait SimpleOutputLayout {
  def outputDir: Path
  lazy val classesOutput = outputDir / PathConfig.classes
  lazy val analysisOutput = outputDir / PathConfig.analysis
  
}

class PathLayout(val projectRoot: Path, val outputDir: Path) extends SimpleOutputLayout {
  lazy val srcDir = projectRoot / "src"
  /**
    * 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
}