packages feed

optparse-applicative-0.17.0.0: tests/Examples/LongSub.hs

{-# LANGUAGE CPP #-}
module Examples.LongSub where

import Data.Monoid
import Options.Applicative

#if __GLASGOW_HASKELL__ <= 702
(<>) :: Monoid a => a -> a -> a
(<>) = mappend
#endif

data Sample
  = Hello [String]
  | Goodbye
  deriving (Eq, Show)

hello :: Parser Sample
hello =
  Hello
    <$> many (argument str (metavar "TARGET..."))
    <*  switch (long "first-flag")
    <*  switch (long "second-flag")
    <*  switch (long "third-flag")
    <*  switch (long "fourth-flag")

sample :: Parser Sample
sample = hsubparser
       ( command "hello-very-long-sub"
         (info hello
               (progDesc "Print greeting"))
       )

opts :: ParserInfo Sample
opts = info (sample <**> helper) idm