packages feed

flags-applicative-0.0.3.0: app/SimpleExample.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import Control.Applicative ((<|>), optional)
import Data.Text (Text, pack)
import Data.Text.Read (decimal, double)
import Flags.Applicative
import System.Environment (getArgs)

data Options = Options
  { rootPath :: Text
  , logLevel :: Int
  , context :: Maybe Text
  , values :: [Double]
  } deriving Show

optionsParser :: FlagParser Options
optionsParser = Options <$> (textFlag "root" "path to the root" <|> textFlag "url" "")
                        <*> (autoFlag "log_level" "" <|> pure 0)
                        <*> (optional $ textFlag "context" "")
                        <*> (autoListFlag "," "values" "" <|> pure [])

main :: IO ()
main = parseSystemFlagsOrDie optionsParser >>= print