packages feed

fortran-src-extras-0.3.1: app/Main.hs

module Main where

import qualified Language.Fortran.Extras.CLI.Serialize as Serialize
import qualified Options.Applicative as OA
import Control.Monad.IO.Class

data Cmd
  = CmdSerialize Serialize.Cfg
    deriving (Eq, Show)

main :: IO ()
main = execParserWithDefaults desc pCmd >>= \case
  CmdSerialize cfg -> Serialize.run cfg >>= \case
    Right ()  -> return ()
    Left  err -> print err
  where
    desc = "fortran-src extra tools"

pCmd :: OA.Parser Cmd
pCmd = OA.hsubparser $
       Serialize.cmd "serialize" "Convert between Fortran source and serialized forms" (CmdSerialize <$> Serialize.pCfg)

--------------------------------------------------------------------------------

-- | Execute a 'Parser' with decent defaults.
execParserWithDefaults :: MonadIO m => String -> OA.Parser a -> m a
execParserWithDefaults desc p = liftIO $ OA.customExecParser
    (OA.prefs $ OA.showHelpOnError)
    (OA.info (OA.helper <*> p) (OA.progDesc desc))