console-program-0.3.1.0: src/System/Console/Internal.hs
module System.Console.Internal where
import Data.Map (Map)
import qualified System.Console.GetOpt as GetOpt
-- | An @Action@ is an @IO@ action, which may take arguments
-- (\"non-options\") and options from the command line.
data Action
= Action
{
run :: [String] -> Map Identifier (Maybe String) -> IO ()
, nonOptions :: [String]
, options :: [GetOpt.OptDescr (Identifier,Maybe String)]
, ignoringOptions :: [GetOpt.OptDescr (Identifier,Maybe String)]
}
data Identifier = Short Char | Long String
deriving (Eq,Ord)
-- | A value of type @Option a@ describes an option, that delivers a value
-- to the program of type @a@.
data Option a = Option
Identifier
(GetOpt.OptDescr (Identifier,Maybe String))
a
(Maybe String -> Either String a)
-- | A @Command@ is an action, together with some descriptive information.
data Command
= Command
{
-- | This determines which command is executed.
name :: String
-- | For usage info.
, description :: String
-- | The actual action performed by this command.
, action :: Action
}