{-# LANGUAGE OverloadedStrings #-} module Main where import Control.Applicative ((<|>), optional) import Data.Text (Text, pack) import Data.Text.Read (decimal) import Flags.Applicative import System.Environment (getArgs) data Options = Options { rootPath :: Text , logLevel :: Int , context :: Maybe Text } deriving Show optionsParser :: FlagParser Options optionsParser = Options <$> textFlag "root" "path to the root" <*> (numericFlag decimal "log_level" "" <|> pure 0) <*> (optional $ textFlag "context" "") main :: IO () main = do args <- getArgs print $ parseFlags optionsParser args