2 module Cabal (main) where
5 import Distribution.PackageDescription
6 import Distribution.PackageDescription.Parse
7 import Distribution.Simple
8 import Distribution.Simple.Utils
9 import Distribution.Verbosity
10 import System.Directory
11 import System.Environment
12 import System.FilePath
14 import qualified Distribution.Make as Make
15 import qualified Distribution.Simple as Simple
22 let verbosity = verbose
23 exists <- doesFileExist setupProg
25 if exists then rawSystemExit verbosity setupProg args
27 gpdFile <- defaultPackageDesc verbosity
28 gpd <- readPackageDescription verbosity gpdFile
29 let pd = packageDescription gpd
31 Just Simple -> Simple.defaultMainArgs args
32 Just Make -> Make.defaultMainArgs args
33 Just Configure -> defaultMainWithHooksArgs autoconfUserHooks args
34 _ | packageName pd == PackageName "Cabal" ->
35 -- Cabal is special...*sigh*
36 Simple.defaultMainArgs args
37 | otherwise -> die "cabal: Don't know what to do!"