summaryrefslogtreecommitdiff
path: root/Setup.hs
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2010-11-30 16:49:15 +0000
committerhallgren <hallgren@chalmers.se>2010-11-30 16:49:15 +0000
commitacfa9722e262cc94a486373288c94b27dbbf7ba0 (patch)
tree0e524057e7c9fa096355197c42b936d3417506b1 /Setup.hs
parent47c276a656057e8499290e85be8117ad6dd5c4bb (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.hs23
1 files changed, 16 insertions, 7 deletions
diff --git a/Setup.hs b/Setup.hs
index 039b32481..fb61988b8 100644
--- a/Setup.hs
+++ b/Setup.hs
@@ -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