module Sys.Exit(
module ExitCode
, module Process
, exitWith
, exitWithFailure
, exitWithFailure1
, exitWithSuccess
, ExitCodeM
, exitCodeM
, createWaitProcessM
, createMakeWaitProcessM
, createWaitProcesses
, createMakeWaitProcesses
, exit
, createWaitProcessesExit
, createMakeWaitProcessesExit
) where
import Control.Category(Category((.)))
import Control.Monad(Monad((>>=)))
import Data.Foldable(Foldable, mapM_)
import Data.Int(Int)
import Data.NotZero(NotZero, notZero1)
import Data.NotZeroOr(NumberM, Number, NotZeroOrT(NotZeroOrT))
import Sys.Process as Process
import Sys.ExitCode as ExitCode
import qualified System.Exit as Exit
import System.IO(IO)
exitWith ::
ExitCode
-> IO a
exitWith =
Exit.exitWith . exitCode
exitWithFailure ::
NotZero Int
-> IO a
exitWithFailure =
exitWith . exitFailure
exitWithFailure1 ::
IO a
exitWithFailure1 =
exitWith (exitFailure notZero1)
exitWithSuccess ::
IO a
exitWithSuccess =
exitWith exitSuccess
type ExitCodeM f =
NumberM Int f
exitCodeM ::
f (Number Int)
-> ExitCodeM f
exitCodeM =
NotZeroOrT
createWaitProcessM ::
CreateProcess
-> ExitCodeM IO
createWaitProcessM =
exitCodeM . createWaitProcess
createMakeWaitProcessM ::
CreateProcess
-> ExitCodeM IO
createMakeWaitProcessM =
exitCodeM . createMakeWaitProcess
createWaitProcesses ::
Foldable t =>
t CreateProcess
-> ExitCodeM IO
createWaitProcesses =
mapM_ createWaitProcessM
createMakeWaitProcesses ::
Foldable t =>
t CreateProcess
-> ExitCodeM IO
createMakeWaitProcesses =
mapM_ createMakeWaitProcessM
exit ::
ExitCodeM IO
-> IO ()
exit e =
let NotZeroOrT x = e
in x >>= exitWith
createWaitProcessesExit ::
Foldable t =>
t CreateProcess
-> IO ()
createWaitProcessesExit =
exit . createWaitProcesses
createMakeWaitProcessesExit ::
Foldable t =>
t CreateProcess
-> IO ()
createMakeWaitProcessesExit =
exit . createMakeWaitProcesses