@@ -14,6 +14,7 @@ import Control.Monad.Error.Class (throwError)
1414import Data.Either (Either (..))
1515import Data.Maybe (Maybe (..))
1616import Effect.Aff (Aff , effectCanceler , makeAff )
17+ import Effect.Class (liftEffect )
1718import Effect.Exception (error )
1819import Effect.Ref as Ref
1920import Node.ChildProcess (errorH , exitH )
@@ -22,8 +23,7 @@ import Node.ChildProcess.Types (Exit(..), KillSignal, stringSignal)
2223import Node.Encoding (Encoding (..))
2324import Node.Errors.SystemError as OS
2425import Node.EventEmitter (on_ )
25- import Node.Stream (onDataString )
26- import Node.Stream as NS
26+ import Node.Stream (dataHStr , setEncoding )
2727import Run (Run , lift )
2828import Type.Proxy (Proxy (..))
2929
@@ -74,23 +74,18 @@ spawn'
7474 , stderr :: String
7575 , exit :: Exit
7676 }
77- spawn' encoding killSignal { cmd, args, stdin } = makeAff \cb -> do
77+ spawn' encoding killSignal { cmd, args } = makeAff \cb -> do
7878 stdoutRef <- Ref .new " "
7979 stderrRef <- Ref .new " "
8080
8181 process <- CP .spawn cmd args
8282
83- case stdin of
84- Just input -> do
85- let write = CP .stdin process
86- void $ NS .writeString write UTF8 input \_ -> do
87- NS .end write (\_ -> mempty)
88- Nothing -> pure unit
89-
90- onDataString (CP .stdout process) encoding \string ->
83+ liftEffect $ setEncoding (CP .stdout process) encoding
84+ CP .stdout process # on_ dataHStr \string ->
9185 Ref .modify_ (_ <> string) stdoutRef
9286
93- onDataString (CP .stderr process) encoding \string ->
87+ liftEffect $ setEncoding (CP .stderr process) encoding
88+ CP .stderr process # on_ dataHStr \string ->
9489 Ref .modify_ (_ <> string) stderrRef
9590
9691 process # on_ errorH \err ->
0 commit comments