module Penny.Zinc (runPenny, P.T(..),
P.defaultFromRuntime) where
import qualified Control.Monad.Exception.Synchronous as Ex
import qualified System.Console.MultiArg.Prim as M
import System.Console.MultiArg.GetArgs (getArgs)
import System.Exit (exitFailure)
import System.IO (stderr, hPutStrLn)
import qualified Penny.Cabin.Interface as I
import qualified Penny.Copper as Cop
import qualified Penny.Shield as S
import qualified Penny.Zinc.Parser as P
runPenny ::
S.Runtime
-> Cop.DefaultTimeZone
-> Cop.RadGroup
-> (S.Runtime -> P.T)
-> [I.Report]
-> IO ()
runPenny rt dtz rg df rs = do
as <- getArgs
case M.parse as (P.parser rt dtz rg df rs) of
Ex.Exception e -> do
hPutStrLn stderr . show $ e
exitFailure
Ex.Success g -> g