raaz-0.2.0: bin/Main.hs
{-# LANGUAGE RecordWildCards #-}
--
-- The main function that drives other commands.
--
import Data.Version (showVersion)
import Data.Monoid
import Options.Applicative
import Raaz (version)
import Command.Checksum
import Command.CpuInfo
import Command.Rand
data Option = ShowVersion
| RunCommand (IO ())
progOption :: Parser Option
progOption = flag ShowVersion ShowVersion versionMods
<|> RunCommand <$> rand
<|> RunCommand <$> checksum
<|> RunCommand <$> cpuInfo
where versionMods = short 'v'
<> long "version"
<> help "Print the version of the raaz library used"
---------------------- The main function and stuff ------------------------------
run :: Option -> IO ()
run ShowVersion = putStrLn $ "raaz version " ++ showVersion version
run (RunCommand cmd) = cmd
main :: IO ()
main = execParser opts >>= run
where opts = info (helper <*> progOption) $
fullDesc
<> header "raaz - A command line interface to the raaz cryptographic library."
<> footer "Homepage: http://github.com/raaz-crypto"