cli-0.0.3: Application/CLI/Class.hs
-- |
-- Module : Application.CLI.Class
-- License : BSD-Style
-- Copyright : Copyright © 2014 Nicolas DI PRIMA
--
-- Maintainer : Nicolas DI PRIMA <nicolas@di-prima.fr>
-- Stability : experimental
-- Portability : unknown
--
module Application.CLI.Class
( CLI (..)
, cliToCommand
) where
import Application.CLI.Types
-- | This is the CLI Class
-- All command you want to add into the CLIContext must be an instance of this
-- class.
class CLI cli where
-- | This is the name of the command. It is also the command line option
-- the action will be triggered every time this string is found to be the
-- first argument of the program
name :: cli
-> String
-- | A description of this command
-- Will be use in the default Usage and the Help function
desc :: cli
-> String
-- | The list of Options
-- It is only for printing, the parser won't use this to parse the command
-- parameters.
options :: cli
-> [OptHelp]
-- | The action to perfom every time the @name@ is found to be the first
-- string of the program parameters
action :: cli
-> CLIContext -- ^ This could be use in order to know all the different available commands etc...
-> Options -- ^ The Command Parameters
-> IO ()
-- | Make the transformation of a CLI instance to a Command
-- object
cliToCommand :: CLI cli
=> cli
-> Command
cliToCommand cli =
Command
{ cmdName = name cli
, cmdDesc = desc cli
, cmdOptions = options cli
, cmdAction = action cli
}