Rename cabal to cabal-bin
[ghc-hetmet.git] / libraries / cabal-bin.hs
diff --git a/libraries/cabal-bin.hs b/libraries/cabal-bin.hs
new file mode 100644 (file)
index 0000000..85341c2
--- /dev/null
@@ -0,0 +1,38 @@
+
+module Cabal (main) where
+
+import Data.Maybe
+import Distribution.PackageDescription
+import Distribution.PackageDescription.Parse
+import Distribution.Simple
+import Distribution.Simple.Utils
+import Distribution.Verbosity
+import System.Directory
+import System.Environment
+import System.FilePath
+
+import qualified Distribution.Make   as Make
+import qualified Distribution.Simple as Simple
+
+setupProg :: FilePath
+setupProg = "./Setup"
+
+main :: IO ()
+main = do
+    let verbosity = verbose
+    exists <- doesFileExist setupProg
+    args <- getArgs
+    if exists then rawSystemExit verbosity setupProg args
+              else do
+        gpdFile <- defaultPackageDesc verbosity
+        gpd <- readPackageDescription verbosity gpdFile
+        let pd = packageDescription gpd
+        case buildType pd of
+            Just Simple    -> Simple.defaultMainArgs                     args
+            Just Make      -> Make.defaultMainArgs                       args
+            Just Configure -> defaultMainWithHooksArgs autoconfUserHooks args
+            _ | packageName pd == PackageName "Cabal" ->
+                              -- Cabal is special...*sigh*
+                              Simple.defaultMainArgs                     args
+              | otherwise  -> die "cabal: Don't know what to do!"
+