hpack-0.18.1: src/Hpack/Options.hs
module Hpack.Options where
import Prelude ()
import Prelude.Compat
data ParseResult = Help | PrintVersion | Run Options | ParseError
deriving (Eq, Show)
data Options = Options {
optionsVerbose :: Bool
, optionsToStdout :: Bool
, optionsTarget :: Maybe FilePath
} deriving (Eq, Show)
parseOptions :: [String] -> ParseResult
parseOptions xs = case xs of
["--version"] -> PrintVersion
["--help"] -> Help
_ -> case targets of
Just (target, toStdout) -> Run (Options verbose toStdout target)
Nothing -> ParseError
where
silentFlag = "--silent"
verbose = not (silentFlag `elem` xs)
ys = filter (/= silentFlag) xs
targets = case ys of
["-"] -> Just (Nothing, True)
["-", "-"] -> Nothing
[dir] -> Just (Just dir, False)
[dir, "-"] -> Just (Just dir, True)
[] -> Just (Nothing, False)
_ -> Nothing