module WithCli.Modifier.Types where

data Modifiers = Modifiers {
  Modifiers -> [(String, String)]
shortOptions :: [(String, [Char])],
  Modifiers -> String -> String
renaming :: String -> String,
  Modifiers -> Maybe (String, String)
positionalArgumentsField :: Maybe (String, String),
  Modifiers -> [(String, String)]
_helpTexts :: [(String, String)],
  Modifiers -> Maybe String
version :: Maybe String
 }

getVersion :: Modifiers -> Maybe String
getVersion :: Modifiers -> Maybe String
getVersion Modifiers
modifiers = Modifiers -> Maybe String
version Modifiers
modifiers

isPositionalArgumentsField :: Modifiers -> String -> Bool
isPositionalArgumentsField :: Modifiers -> String -> Bool
isPositionalArgumentsField Modifiers
modifiers String
field =
  Bool
-> ((String, String) -> Bool) -> Maybe (String, String) -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False ((String
field String -> String -> Bool
forall a. Eq a => a -> a -> Bool
==) (String -> Bool)
-> ((String, String) -> String) -> (String, String) -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, String) -> String
forall a b. (a, b) -> a
fst) (Modifiers -> Maybe (String, String)
positionalArgumentsField Modifiers
modifiers)

getPositionalArgumentType :: Modifiers -> Maybe String
getPositionalArgumentType :: Modifiers -> Maybe String
getPositionalArgumentType = ((String, String) -> String)
-> Maybe (String, String) -> Maybe String
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (String, String) -> String
forall a b. (a, b) -> b
snd (Maybe (String, String) -> Maybe String)
-> (Modifiers -> Maybe (String, String))
-> Modifiers
-> Maybe String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Modifiers -> Maybe (String, String)
positionalArgumentsField