diff options
| author | hallgren <hallgren@chalmers.se> | 2010-11-30 16:49:15 +0000 |
|---|---|---|
| committer | hallgren <hallgren@chalmers.se> | 2010-11-30 16:49:15 +0000 |
| commit | acfa9722e262cc94a486373288c94b27dbbf7ba0 (patch) | |
| tree | 0e524057e7c9fa096355197c42b936d3417506b1 /Setup.hs | |
| parent | 47c276a656057e8499290e85be8117ad6dd5c4bb (diff) | |
Setup.hs: improved langs=... option
Instead of just giving an explicit list of languages to compile, you can
now also add and remove languages from the default list by using langs=+...
or langs=-...
Examples:
cabal build langs=Eng,Swe,Ger -- as before, compile the given 3 langs
cabal build langs=-Fin -- use default languages, but omit Fin
cabal build langs=+Urd -- use default languages + Urd
("cabal build ..." is the same as "runhaskell Setup.hs build ...")
Diffstat (limited to 'Setup.hs')
| -rw-r--r-- | Setup.hs | 23 |
1 files changed, 16 insertions, 7 deletions
@@ -76,7 +76,7 @@ rglCommands = return () ] where - optl ls args = fromMaybe ls $ getOptLangs args + optl ls args = getOptLangs ls args -------------------------------------------------------- @@ -262,12 +262,21 @@ getOptMode args | otherwise = AllTenses -- list of languages overriding the definitions above -getOptLangs args = case [ls | arg <- args, let (f,ls) = splitAt (length langs_prefix) arg, f==langs_prefix] of - ls:_ -> return $ findLangs $ seps ls - _ -> Nothing - where - seps = words . map (\c -> if c==',' then ' ' else c) - findLangs ls = [lang | lang@(_,la) <- langs, elem la ls] +getOptLangs defaultLangs args = + case [ls | arg <- args, + let (f,ls) = splitAt (length langs_prefix) arg, + f==langs_prefix] of + ('+':ls):_ -> foldr addLang defaultLangs (seps ls) + ('-':ls):_ -> foldr removeLang defaultLangs (seps ls) + ls:_ -> findLangs langs (seps ls) + _ -> defaultLangs + where + seps = words . map (\c -> if c==',' then ' ' else c) + findLangs langs ls = [lang | lang@(_,la) <- langs, la `elem` ls] + removeLang l ls = [lang | lang@(_,la) <- ls, la/=l] + addLang l ls = if null (findLangs ls [l]) + then findLangs langs [l]++ls + else ls getRGLBuildSubDir lbi mode = case mode of |
