project/Build.scala
author Tomas Zeman <tzeman@volny.cz>
Tue, 23 Apr 2013 10:36:04 +0200
changeset 108 ef4e3e0ef83f
parent 21 641c7190c566
permissions -rw-r--r--
84a94fa29a67504b Task/Project notifications

/*
 * See https://github.com/retronym/scratch/blob/master/20110929/project/build.scala
 * for details.
 */

import sbt._
import Keys._

object CmgmtBuild extends Build {

  // Setting shared by all projects
  lazy val standardSettings = Defaults.defaultSettings ++ Seq(
  // The console analog to Defaults.mainRunTask and Defaults.mainRunMainTask
  // Its omission from the standard settings seems to be an oversight.
  console <<= consoleTask(fullClasspath in Runtime, console))

  lazy val root = Project(
    id = "root",
    base = file("."),
    settings = standardSettings
  )

  import Build.data
  import Project.Initialize

  // Copy/Paste from Defaults.consoleTask, allowing classpath : ScopedTask rather than : Task.
  def consoleTask(classpath: ScopedTask[Classpath], task: TaskKey[_]): Initialize[Task[Unit]] = {
    (compilers in task, classpath, scalacOptions in task, initialCommands in task, streams) map {
      (cs, cp, options, initCommands, s) =>
      (new Console(cs.scalac))(data(cp), options, initCommands, "", s.log).foreach(msg => sys.error(msg))
      println()
    }
  }

}

// vim: set ts=2 sw=2 et: