-- | haste-inst - Haste wrapper for cabal.
module Main where
import System.Environment
import System.Exit
import Haste.Environment
import Control.Shell
import Data.List
type Match = (String -> Bool, [String] -> [String])
cabal :: [String] -> IO ()
cabal args = do
res <- shell $ run_ "cabal" (hasteargs ++ args') ""
case res of
Left _ -> exitFailure
_ -> exitSuccess
where
args' = [arg | arg <- args, arg /= "--install-global", arg /= "--global"]
hasteargs
| "build" `elem` args =
["--with-ghc=" ++ hasteBinary]
| otherwise =
["--with-compiler=" ++ hasteBinary,
"--with-hc-pkg=" ++ hastePkgBinary,
"--with-hsc2hs=hsc2hs",
"-fhaste-inst"] ++
if "--install-global" `elem` args || "--global" `elem` args
then ["--prefix=" ++ hasteInstSysDir,
"--package-db=" ++ pkgSysDir]
else ["--prefix=" ++ hasteInstUserDir,
"--package-db=" ++ pkgSysDir,
"--package-db=" ++ pkgUserDir]
main :: IO ()
main = do
as <- getArgs
as <- return $ if "--install-jsmods" `elem` as || not ("build" `elem` as)
then libinstall : filter (/= "--install-jsmods") as
else as
as <- return $ if "--unbooted" `elem` as
then unbooted : filter (/= "--unbooted") as
else as
cabal as
where
libinstall = "--ghc-option=--libinstall"
unbooted = "--ghc-option=--unbooted"