epub-tools-3.0: src/app/epubmeta.hs
-- License: ISC (see LICENSE)
-- Author: Dino Morelli <dino@ui3.info>
import Data.Maybe
import System.Environment ( getArgs )
import System.Exit
import EpubTools.EpubMeta.Display
import EpubTools.EpubMeta.Edit
import EpubTools.EpubMeta.Export
import EpubTools.EpubMeta.Import
import EpubTools.EpubMeta.Opts
import EpubTools.EpubMeta.Util
dispatch :: Options -> [FilePath] -> EM ()
dispatch opts (f:[]) | optEdit opts /= NotEditing = edit opts f
dispatch opts (f:[]) | isJust . optImport $ opts = importOpf opts f
dispatch opts (f:[]) | optExport opts /= NoExport = exportOpf opts f
dispatch opts (f:[]) = display opts f
dispatch _ _ = throwError usageText
main :: IO ()
main = do
result <- runEM $
liftIO getArgs >>= parseOpts >>= uncurry dispatch
either exitFail (const (exitWith ExitSuccess)) result
where
exitFail msg = do
putStrLn msg
exitWith $ ExitFailure 1