highlight errors even if real output is to a file
(unless told not to)
This commit is contained in:
parent
050346e344
commit
4cc50c6bcd
2 changed files with 10 additions and 8 deletions
12
exe/Main.idr
12
exe/Main.idr
|
@ -30,7 +30,7 @@ die opts err = do
|
||||||
private
|
private
|
||||||
runPretty : Options -> Eff Pretty a -> a
|
runPretty : Options -> Eff Pretty a -> a
|
||||||
runPretty opts act =
|
runPretty opts act =
|
||||||
let doColor = opts.color && opts.outFile == Stdout
|
let doColor = opts.color && opts.outFile == Console
|
||||||
hl = if doColor then highlightSGR else noHighlight
|
hl = if doColor then highlightSGR else noHighlight
|
||||||
in
|
in
|
||||||
runPrettyWith Outer opts.flavor hl 2 act
|
runPrettyWith Outer opts.flavor hl 2 act
|
||||||
|
@ -133,9 +133,9 @@ private
|
||||||
outputStr : Lazy String -> Eff Compile ()
|
outputStr : Lazy String -> Eff Compile ()
|
||||||
outputStr str =
|
outputStr str =
|
||||||
case !(asksAt OPTS outFile) of
|
case !(asksAt OPTS outFile) of
|
||||||
None => pure ()
|
None => pure ()
|
||||||
Stdout => putStr str
|
Console => putStr str
|
||||||
File f => do
|
File f => do
|
||||||
res <- withFile f WriteTruncate pure $ \h => fPutStr h str
|
res <- withFile f WriteTruncate pure $ \h => fPutStr h str
|
||||||
rethrow $ mapFst (WriteError f) res
|
rethrow $ mapFst (WriteError f) res
|
||||||
|
|
||||||
|
@ -221,7 +221,9 @@ main = do
|
||||||
(_, opts, files) <- options
|
(_, opts, files) <- options
|
||||||
case !(runCompile opts !newState $ traverse_ processFile files) of
|
case !(runCompile opts !newState $ traverse_ processFile files) of
|
||||||
Right () => pure ()
|
Right () => pure ()
|
||||||
Left e => die (Opts opts.width) $ runPretty opts $ prettyError e
|
Left e => die (Opts opts.width) $
|
||||||
|
runPretty ({outFile := Console} opts) $
|
||||||
|
prettyError e
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
|
@ -11,7 +11,7 @@ import Derive.Prelude
|
||||||
%language ElabReflection
|
%language ElabReflection
|
||||||
|
|
||||||
public export
|
public export
|
||||||
data OutFile = File String | Stdout | None
|
data OutFile = File String | Console | None
|
||||||
%name OutFile f
|
%name OutFile f
|
||||||
%runElab derive "OutFile" [Eq, Ord, Show]
|
%runElab derive "OutFile" [Eq, Ord, Show]
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ export
|
||||||
defaultOpts : IO Options
|
defaultOpts : IO Options
|
||||||
defaultOpts = pure $ MkOpts {
|
defaultOpts = pure $ MkOpts {
|
||||||
color = True,
|
color = True,
|
||||||
outFile = Stdout,
|
outFile = Console,
|
||||||
until = Nothing,
|
until = Nothing,
|
||||||
flavor = Unicode,
|
flavor = Unicode,
|
||||||
width = cast !getTermCols,
|
width = cast !getTermCols,
|
||||||
|
@ -61,7 +61,7 @@ data OptAction = ShowHelp HelpType | Err String | Ok (Options -> Options)
|
||||||
private
|
private
|
||||||
toOutFile : String -> OptAction
|
toOutFile : String -> OptAction
|
||||||
toOutFile "" = Ok {outFile := None}
|
toOutFile "" = Ok {outFile := None}
|
||||||
toOutFile "-" = Ok {outFile := Stdout}
|
toOutFile "-" = Ok {outFile := Console}
|
||||||
toOutFile f = Ok {outFile := File f}
|
toOutFile f = Ok {outFile := File f}
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
Loading…
Reference in a new issue