-- | Example: -- -- @ -- {-\# LANGUAGE QuasiQuotes \#-} -- module Main where -- -- import Control.Monad (when) -- import Data.Char (toUpper) -- import System.Environment (getArgs) -- import System.Console.Docopt -- -- patterns :: Docopt -- patterns = [docopt| -- docopt-sample version 0.1.0 -- -- Usage: -- docopt-sample cat \ -- docopt-sample echo [--caps] \ -- -- Options: -- -c, --caps Caps-lock the echoed argument -- |] -- -- getArgOrExit = getArgOrExitWith patterns -- -- main :: IO () -- main = do -- args <- parseArgsOrExit patterns =<< getArgs -- -- when (args \`isPresent\` (command \"cat\")) $ do -- file <- args \`getArgOrExit\` (argument \"file\") -- putStr =<< readFile file -- -- when (args \`isPresent\` (command \"echo\")) $ do -- let charTransform = if args \`isPresent\` (longOption \"caps\") -- then toUpper -- else id -- string <- args \`getArgOrExit\` (argument \"string\") -- putStrLn $ map charTransform string -- @ module System.Console.Docopt ( module System.Console.Docopt.QQ, module System.Console.Docopt.Public ) where import System.Console.Docopt.QQ import System.Console.Docopt.Public