From 4c99e3b6eb50cfe2c1a604d0c0dec97607eb002c Mon Sep 17 00:00:00 2001 From: Dominik Picheta Date: Sun, 29 Jan 2017 16:58:53 +0100 Subject: [PATCH] Fixes #321. --- src/nimble.nim | 18 +++++++++--------- src/nimblepkg/common.nim | 12 ++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/nimble.nim b/src/nimble.nim index 9d19199..9edf446 100644 --- a/src/nimble.nim +++ b/src/nimble.nim @@ -309,8 +309,13 @@ proc buildFromDir(pkgInfo: PackageInfo, paths: seq[string], forRelease: bool) = [pkgInfo.backend, releaseOpt, args, outputOpt, realDir / bin.changeFileExt("nim")]) except NimbleError: - raise newException(BuildFailed, "Build failed for package: " & - pkgInfo.name) + let currentExc = (ref NimbleError)(getCurrentException()) + let exc = newException(BuildFailed, "Build failed for package: " & + pkgInfo.name) + let (error, hint) = getOutputInfo(currentExc) + exc.msg.add("\nDetails:\n" & error) + exc.hint = hint + raise exc proc saveNimbleMeta(pkgDestDir, url, vcsRevision: string, filesInstalled, bins: HashSet[string]) = @@ -1072,13 +1077,8 @@ when isMainModule: try: parseCmdLine().doAction() except NimbleError: - let err = (ref NimbleError)(getCurrentException()) - error = err.msg - when not defined(release): - let stackTrace = getStackTrace(getCurrentException()) - error = stackTrace & "\n\n" & error - if not err.isNil: - hint = err.hint + let currentExc = (ref NimbleError)(getCurrentException()) + (error, hint) = getOutputInfo(currentExc) except NimbleQuit: nil finally: diff --git a/src/nimblepkg/common.nim b/src/nimblepkg/common.nim index dabda67..8a90e47 100644 --- a/src/nimblepkg/common.nim +++ b/src/nimblepkg/common.nim @@ -49,5 +49,17 @@ when not defined(nimscript): exc.hint = hint raise exc + proc getOutputInfo*(err: ref NimbleError): (string, string) = + var error = "" + var hint = "" + error = err.msg + when not defined(release): + let stackTrace = getStackTrace(err) + error = stackTrace & "\n\n" & error + if not err.isNil: + hint = err.hint + + return (error, hint) + const nimbleVersion* = "0.8.3"