module Hsm.Core.App ( runApp ) where import Effectful (Eff, IOE, runEff) import Options.Applicative (Parser, (<**>), execParser, fullDesc, helper, info, progDesc) runApp :: Parser o -> String -> (o -> Eff '[ IOE] a) -> IO a runApp parser desc app = execParser (info (parser <**> helper) $ fullDesc <> progDesc desc) >>= runEff . app