module BishBosh.Input.CategorisedCommandLineOptions(
IOAction,
ContextualIOAction,
OptionsMutator,
CategorisedCommandLineOptions(
getMaybeConfigLocationParameter,
getIOActions,
getContextualIOActions,
getOptionsMutators
),
setConfigLocation,
prependIOAction,
prependContextualIOAction,
prependOptionsMutator
) where
import qualified BishBosh.Property.Empty as Property.Empty
import qualified System.FilePath
type IOAction = IO ()
type ContextualIOAction options = options -> IOAction
type OptionsMutator options = options -> options
data CategorisedCommandLineOptions options = MkCategorisedCommandLineOptions {
CategorisedCommandLineOptions options -> Maybe FilePath
getMaybeConfigLocationParameter :: Maybe System.FilePath.FilePath,
CategorisedCommandLineOptions options -> [IOAction]
getIOActions :: [IOAction],
CategorisedCommandLineOptions options
-> [ContextualIOAction options]
getContextualIOActions :: [ContextualIOAction options],
CategorisedCommandLineOptions options -> [OptionsMutator options]
getOptionsMutators :: [OptionsMutator options]
}
instance Property.Empty.Empty (CategorisedCommandLineOptions options) where
empty :: CategorisedCommandLineOptions options
empty = MkCategorisedCommandLineOptions :: forall options.
Maybe FilePath
-> [IOAction]
-> [ContextualIOAction options]
-> [OptionsMutator options]
-> CategorisedCommandLineOptions options
MkCategorisedCommandLineOptions {
getMaybeConfigLocationParameter :: Maybe FilePath
getMaybeConfigLocationParameter = Maybe FilePath
forall a. Empty a => a
Property.Empty.empty,
getIOActions :: [IOAction]
getIOActions = [IOAction]
forall a. Empty a => a
Property.Empty.empty,
getContextualIOActions :: [ContextualIOAction options]
getContextualIOActions = [ContextualIOAction options]
forall a. Empty a => a
Property.Empty.empty,
getOptionsMutators :: [OptionsMutator options]
getOptionsMutators = [OptionsMutator options]
forall a. Empty a => a
Property.Empty.empty
}
type Transformation options = CategorisedCommandLineOptions options -> CategorisedCommandLineOptions options
setConfigLocation :: System.FilePath.FilePath -> Transformation options
setConfigLocation :: FilePath -> Transformation options
setConfigLocation FilePath
filePath CategorisedCommandLineOptions options
categorisedCommandLineOptions = CategorisedCommandLineOptions options
categorisedCommandLineOptions { getMaybeConfigLocationParameter :: Maybe FilePath
getMaybeConfigLocationParameter = FilePath -> Maybe FilePath
forall a. a -> Maybe a
Just FilePath
filePath }
prependIOAction :: IOAction -> Transformation options
prependIOAction :: IOAction -> Transformation options
prependIOAction IOAction
ioAction CategorisedCommandLineOptions options
categorisedCommandLineOptions = CategorisedCommandLineOptions options
categorisedCommandLineOptions { getIOActions :: [IOAction]
getIOActions = IOAction
ioAction IOAction -> [IOAction] -> [IOAction]
forall a. a -> [a] -> [a]
: CategorisedCommandLineOptions options -> [IOAction]
forall options. CategorisedCommandLineOptions options -> [IOAction]
getIOActions CategorisedCommandLineOptions options
categorisedCommandLineOptions }
prependContextualIOAction :: ContextualIOAction options -> Transformation options
prependContextualIOAction :: ContextualIOAction options -> Transformation options
prependContextualIOAction ContextualIOAction options
contextualIOAction CategorisedCommandLineOptions options
categorisedCommandLineOptions = CategorisedCommandLineOptions options
categorisedCommandLineOptions { getContextualIOActions :: [ContextualIOAction options]
getContextualIOActions = ContextualIOAction options
contextualIOAction ContextualIOAction options
-> [ContextualIOAction options] -> [ContextualIOAction options]
forall a. a -> [a] -> [a]
: CategorisedCommandLineOptions options
-> [ContextualIOAction options]
forall options.
CategorisedCommandLineOptions options
-> [ContextualIOAction options]
getContextualIOActions CategorisedCommandLineOptions options
categorisedCommandLineOptions }
prependOptionsMutator :: OptionsMutator options -> Transformation options
prependOptionsMutator :: OptionsMutator options -> Transformation options
prependOptionsMutator OptionsMutator options
optionsMutator CategorisedCommandLineOptions options
categorisedCommandLineOptions = CategorisedCommandLineOptions options
categorisedCommandLineOptions { getOptionsMutators :: [OptionsMutator options]
getOptionsMutators = OptionsMutator options
optionsMutator OptionsMutator options
-> [OptionsMutator options] -> [OptionsMutator options]
forall a. a -> [a] -> [a]
: CategorisedCommandLineOptions options -> [OptionsMutator options]
forall options.
CategorisedCommandLineOptions options -> [OptionsMutator options]
getOptionsMutators CategorisedCommandLineOptions options
categorisedCommandLineOptions }