-- | Zinc - the Penny command-line interface 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