module Hhp.Flag where
import GHC.Driver.Session (flagSpecName, fFlags, wWarningFlags, fLangFlags)
import Hhp.Types
listFlags :: Options -> IO String
listFlags :: Options -> IO [Char]
listFlags Options
opt = forall (m :: * -> *) a. Monad m => a -> m a
return forall a b. (a -> b) -> a -> b
$ forall a. ToString a => Options -> a -> [Char]
convert Options
opt [[Char]]
options
where
options :: [[Char]]
options = [Char] -> [[Char]] -> [[Char]]
expand [Char]
"-f" [[Char]]
fOptions forall a. [a] -> [a] -> [a]
++ [Char] -> [[Char]] -> [[Char]]
expand [Char]
"-W" [[Char]]
wOptions
fOptions :: [[Char]]
fOptions = forall a b. (a -> b) -> [a] -> [b]
map forall flag. FlagSpec flag -> [Char]
flagSpecName [FlagSpec GeneralFlag]
fFlags forall a. [a] -> [a] -> [a]
++ forall a b. (a -> b) -> [a] -> [b]
map forall flag. FlagSpec flag -> [Char]
flagSpecName [FlagSpec Extension]
fLangFlags
wOptions :: [[Char]]
wOptions = forall a b. (a -> b) -> [a] -> [b]
map forall flag. FlagSpec flag -> [Char]
flagSpecName [FlagSpec WarningFlag]
wWarningFlags
expand :: [Char] -> [[Char]] -> [[Char]]
expand [Char]
prefix [[Char]]
lst = [ [Char]
prefix forall a. [a] -> [a] -> [a]
++ [Char]
no forall a. [a] -> [a] -> [a]
++ [Char]
option
| [Char]
option <- [[Char]]
lst
, [Char]
no <- [[Char]
"",[Char]
"no-"]
]