mirror of https://github.com/sbt/sbt.git
Merge branch '0.12' of git://github.com/harrah/xsbt into 0.12
This commit is contained in:
commit
7cbc967dfe
|
|
@ -177,7 +177,7 @@ trait Init[Scope]
|
|||
if(dist < 0) None else Some(dist)
|
||||
}
|
||||
|
||||
final class Uninitialized(val undefined: Seq[Undefined], msg: String) extends Exception(msg)
|
||||
final class Uninitialized(val undefined: Seq[Undefined], override val toString: String) extends Exception(toString)
|
||||
final class Undefined(val definingKey: ScopedKey[_], val referencedKey: ScopedKey[_])
|
||||
final class RuntimeUndefined(val undefined: Seq[Undefined]) extends RuntimeException("References to undefined settings at runtime.")
|
||||
def Undefined(definingKey: ScopedKey[_], referencedKey: ScopedKey[_]): Undefined = new Undefined(definingKey, referencedKey)
|
||||
|
|
|
|||
|
|
@ -4,4 +4,11 @@
|
|||
package sbt
|
||||
|
||||
final class MessageOnlyException(override val toString: String) extends RuntimeException(toString)
|
||||
final class NoMessageException extends RuntimeException
|
||||
|
||||
/** A dummy exception for the top-level exception handler to know that an exception
|
||||
* has been handled, but is being passed further up to indicate general failure. */
|
||||
final class AlreadyHandledException extends RuntimeException
|
||||
|
||||
/** A marker trait for a top-level exception handler to know that this exception
|
||||
* doesn't make sense to display. */
|
||||
trait UnprintableException extends Throwable
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/* sbt -- Simple Build Tool
|
||||
* Copyright 2010 Mark Harrah
|
||||
*/
|
||||
package sbt
|
||||
|
||||
import java.io.{File, PrintWriter}
|
||||
|
||||
final case class GlobalLogging(full: Logger, backed: ConsoleLogger, backing: GlobalLogBacking)
|
||||
final case class GlobalLogBacking(file: File, last: Option[File], newLogger: (PrintWriter, GlobalLogBacking) => GlobalLogging, newBackingFile: () => File)
|
||||
{
|
||||
def shift(newFile: File) = GlobalLogBacking(newFile, Some(file), newLogger, newBackingFile)
|
||||
def shiftNew() = shift(newBackingFile())
|
||||
def unshift = GlobalLogBacking(last getOrElse file, None, newLogger, newBackingFile)
|
||||
}
|
||||
object GlobalLogBacking
|
||||
{
|
||||
def apply(newLogger: (PrintWriter, GlobalLogBacking) => GlobalLogging, newBackingFile: => File): GlobalLogBacking =
|
||||
GlobalLogBacking(newBackingFile, None, newLogger, newBackingFile _)
|
||||
}
|
||||
object GlobalLogging
|
||||
{
|
||||
def initial(newLogger: (PrintWriter, GlobalLogBacking) => GlobalLogging, newBackingFile: => File): GlobalLogging =
|
||||
{
|
||||
val log = ConsoleLogger()
|
||||
GlobalLogging(log, log, GlobalLogBacking(newLogger, newBackingFile))
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
package sbt
|
||||
|
||||
import java.io.PrintWriter
|
||||
|
||||
object MainLogging
|
||||
{
|
||||
def multiLogger(config: MultiLoggerConfig): Logger =
|
||||
{
|
||||
import config._
|
||||
val multi = new MultiLogger(console :: backed :: extra)
|
||||
// sets multi to the most verbose for clients that inspect the current level
|
||||
multi setLevel Level.unionAll(backingLevel :: screenLevel :: extra.map(_.getLevel))
|
||||
// set the specific levels
|
||||
console setLevel screenLevel
|
||||
backed setLevel backingLevel
|
||||
console setTrace screenTrace
|
||||
backed setTrace backingTrace
|
||||
multi: Logger
|
||||
}
|
||||
def globalDefault(writer: PrintWriter, backing: GlobalLogBacking): GlobalLogging =
|
||||
{
|
||||
val backed = defaultBacked()(writer)
|
||||
val full = multiLogger(defaultMultiConfig( backed ) )
|
||||
GlobalLogging(full, backed, backing)
|
||||
}
|
||||
|
||||
def defaultMultiConfig(backing: AbstractLogger): MultiLoggerConfig =
|
||||
new MultiLoggerConfig(defaultScreen, backing, Nil, Level.Info, Level.Debug, -1, Int.MaxValue)
|
||||
|
||||
def defaultScreen: AbstractLogger = ConsoleLogger()
|
||||
|
||||
def defaultBacked(useColor: Boolean = ConsoleLogger.formatEnabled): PrintWriter => ConsoleLogger =
|
||||
to => ConsoleLogger(ConsoleLogger.printWriterOut(to), useColor = useColor) // TODO: should probably filter ANSI codes when useColor=false
|
||||
}
|
||||
|
||||
final case class MultiLoggerConfig(console: AbstractLogger, backed: AbstractLogger, extra: List[AbstractLogger], screenLevel: Level.Value, backingLevel: Level.Value, screenTrace: Int, backingTrace: Int)
|
||||
Loading…
Reference in New Issue