summaryrefslogtreecommitdiff
path: root/Omni
diff options
context:
space:
mode:
Diffstat (limited to 'Omni')
-rw-r--r--Omni/Bild.hs3
-rw-r--r--Omni/Log/Terminal.hs5
2 files changed, 5 insertions, 3 deletions
diff --git a/Omni/Bild.hs b/Omni/Bild.hs
index 4bb62a5..aac0d2d 100644
--- a/Omni/Bild.hs
+++ b/Omni/Bild.hs
@@ -1235,7 +1235,8 @@ run Proc {..} = do
Conduit.proc cmd args
|> (\proc_ -> proc_ {Process.create_group = True})
|> Conduit.streamingProcess
- +> \(Conduit.UseProvidedHandle, stdout_, stderr_, hdl) ->
+ +> \(stdin_, stdout_, stderr_, hdl) -> do
+ IO.hClose stdin_ -- Close stdin immediately since we don't use it
(,,)
</ Async.Concurrently (Conduit.waitForStreamingProcess hdl)
<*> Async.Concurrently (loud ?: (puts stdout_, logs ns stdout_))
diff --git a/Omni/Log/Terminal.hs b/Omni/Log/Terminal.hs
index 6d5d70c..a78e544 100644
--- a/Omni/Log/Terminal.hs
+++ b/Omni/Log/Terminal.hs
@@ -11,6 +11,7 @@ module Omni.Log.Terminal
where
import Alpha
+import qualified Control.Exception as Exception
import qualified Data.Text as Text
import qualified System.Console.ANSI as ANSI
import qualified System.Environment as Env
@@ -40,8 +41,8 @@ detectTerminal = do
(Nothing, _) -> False
_ -> True
- -- Get terminal size
- mSize <- ANSI.getTerminalSize
+ -- Get terminal size, catching exceptions from stdin issues
+ mSize <- Exception.catch ANSI.getTerminalSize <| \(_ :: Exception.IOException) -> pure Nothing
let (width, height) = case mSize of
Just (h, w) -> (w, h)
Nothing -> (80, 24) -- sensible default