show full stack trace by default when running in batch mode

This commit is contained in:
Mark Harrah 2012-06-22 22:11:24 -04:00
parent 2df88bf0a3
commit dc2aaaf7ac
4 changed files with 18 additions and 3 deletions

View File

@ -39,11 +39,13 @@ object LogManager
def getOr[T](key: AttributeKey[T], default: T): T = data.get(scope, key) getOrElse default
val screenLevel = getOr(logLevel.key, Level.Info)
val backingLevel = getOr(persistLogLevel.key, Level.Debug)
val screenTrace = getOr(traceLevel.key, -1)
val screenTrace = getOr(traceLevel.key, defaultTraceLevel(state))
val backingTrace = getOr(persistTraceLevel.key, Int.MaxValue)
val extraBacked = state.globalLogging.backed :: Nil
multiLogger( new MultiLoggerConfig(console, backed, extraBacked ::: extra, screenLevel, backingLevel, screenTrace, backingTrace) )
}
def defaultTraceLevel(state: State): Int =
if(state.interactive) -1 else Int.MaxValue
def suppressedMessage(key: ScopedKey[_], state: State): SuppressedTraceContext => Option[String] =
{
lazy val display = Project.showContextKey(state)

View File

@ -118,9 +118,9 @@ object BasicCommands
val line = reader.readLine(prompt)
line match {
case Some(line) =>
val newState = s.copy(onFailure = Some(Shell), remainingCommands = line +: Shell +: s.remainingCommands)
val newState = s.copy(onFailure = Some(Shell), remainingCommands = line +: Shell +: s.remainingCommands).setInteractive(true)
if(line.trim.isEmpty) newState else newState.clearGlobalLog
case None => s
case None => s.setInteractive(false)
}
}

View File

@ -7,4 +7,5 @@ object BasicKeys
val historyPath = AttributeKey[Option[File]]("history", "The location where command line history is persisted.", 40)
val shellPrompt = AttributeKey[State => String]("shell-prompt", "The function that constructs the command prompt from the current build state.", 10000)
val watch = AttributeKey[Watched]("watch", "Continuous execution configuration.", 1000)
private[sbt] val interactive = AttributeKey[Boolean]("interactive", "True if commands are currently being entered from an interactive environment.", 10)
}

View File

@ -38,6 +38,13 @@ trait Identity {
override final def toString = super.toString
}
/** StateOps methods to be merged at the next binary incompatible release. */
private[sbt] trait NewStateOps
{
def interactive: Boolean
def setInteractive(flag: Boolean): State
}
/** Convenience methods for State transformations and operations. */
trait StateOps {
def process(f: (String, State) => State): State
@ -151,6 +158,11 @@ object State
new Reboot(app.scalaProvider.version, state.remainingCommands, app.id, state.configuration.baseDirectory)
}
private[sbt] implicit def newStateOps(s: State): NewStateOps = new NewStateOps {
def interactive = s.get(BasicKeys.interactive).getOrElse(false)
def setInteractive(i: Boolean) = s.put(BasicKeys.interactive, i)
}
/** Provides operations and transformations on State. */
implicit def stateOps(s: State): StateOps = new StateOps {
def process(f: (String, State) => State): State =