pilu/src/CLI.hs

31 lines
814 B
Haskell

module CLI (
Invocation(..)
, invoked
) where
import Options.Applicative (
Parser, execParser, flag, flag', fullDesc, header, help, helper, info, long, short
)
import Control.Applicative ((<**>), (<|>))
import Data.Monoid ((<>))
import Data.Version (showVersion)
import qualified Paths_pilu as Pilu (version)
data Invocation = Inventory | Schedule | Version String
versionStr :: String
versionStr = showVersion Pilu.version
invocation :: Parser Invocation
invocation =
flag' Inventory
(short 'i' <> long "inventory" <> help "Show a full inventory")
<|> flag Schedule (Version versionStr)
(long "version" <> help "Show the version number")
invoked :: IO Invocation
invoked = execParser $
info
(invocation <**> helper)
(fullDesc <> header ("Pilu v" ++ versionStr))