{-# LANGUAGE RecordWildCards #-} module System.Console.CmdArgs.Implicit.Reform(reform) where import System.Console.CmdArgs.Implicit.Local import System.Console.CmdArgs.Implicit.Type import System.Console.CmdArgs.Verbosity import Data.Generics.Any import Data.List import Data.Maybe
reform
::
Prog_
->
CmdArgs
Any
->
Maybe
[
String
]
reform
Prog_{..}
CmdArgs{..}
=
Just
$
f
"help"
progHelpArg
(
isJust
cmdArgsHelp
)
++
f
"version"
progVersionArg
(
isJust
cmdArgsVersion
)
++
f
"verbose"
(
fst
progVerbosityArgs
) (
cmdArgsVerbosity
==
Just
Loud
)
++
f
"quiet"
(
snd
progVerbosityArgs
) (
cmdArgsVerbosity
==
Just
Quiet
) where
f
ex
(
Just
x
)
True
=
pickArg
$
builtinNames
x
++
[
ex
]
f
_ _ _ = []
pickArg
:: [
String
] -> [
String
]
pickArg
xs
= case
partition
(
(==)
1
.
length
)
xs
of (_,
x
:
_) -> [
"--"
++
x
] (
x
:
_, _) -> [
"-"
++
x
] _ -> []
{- data Prog_ = Prog_ {progModes :: [Mode_] ,progSummary :: Maybe [String] ,progProgram :: String ,progHelp :: String -- only for multiple mode programs ,progVerbosityArgs :: (Maybe Builtin_, Maybe Builtin_) ,progHelpArg :: Maybe Builtin_ ,progVersionArg :: Maybe Builtin_ } deriving Show -}