hpc-codecov-0.5.0.0: src/Trace/Hpc/Codecov/Main.hs
-- |
-- Module: Trace.Hpc.Codecov.Main
-- Copyright: (c) 2022 8c6794b6
-- License: BSD3
-- Maintainer: 8c6794b6 <8c6794b6@gmail.com>
--
-- Main function for @hpc-codecov@.
--
module Trace.Hpc.Codecov.Main (defaultMain) where
-- base
import Control.Exception (Exception (..), handle, throwIO)
import System.Environment (getArgs, getProgName)
import System.Exit (exitFailure)
-- Internal
import Trace.Hpc.Codecov.Exception
import Trace.Hpc.Codecov.Options
import Trace.Hpc.Codecov.Report
-- | The main function for @hpc-codecov@ executable.
defaultMain :: IO ()
defaultMain = handle handler (getArgs >>= go)
where
go args =
case parseOptions args of
Right opts | optShowHelp opts -> printHelp
| optShowVersion opts -> printVersion
| optShowNumeric opts -> printNumericVersion
| otherwise -> opt2rpt opts >>= genReport
Left errs -> throwIO (InvalidArgs errs)
handler :: HpcCodecovError -> IO a
handler e =
do putStr ("Error: " ++ displayException e)
name <- getProgName
putStrLn ("Run '" ++ name ++ " --help' for usage.")
exitFailure