{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Types ( GhcSource(..)
, Options(..)
, MyState(..)
, DirStructure(..)
, MyException(..)
, Verbosity(..)
) where
import Control.Monad.Error (Error)
data GhcSource = System -- Use System's copy of GHC
| Tarball FilePath -- Use GHC from tarball
data Verbosity = Quiet
| Verbose
| VeryVerbose
deriving (Eq, Ord)
data Options = Options { verbosity :: Verbosity
, skipSanityCheck :: Bool
, vheName :: String -- Virtual Haskell Environment name
, ghcSource :: GhcSource
, makeCmd :: String -- make substitute used for 'make install' of external GHC
}
data MyState = MyState { logDepth :: Integer -- used for indentation of logging messages
}
newtype MyException = MyException { getExceptionMessage :: String }
deriving Error
-- Only absolute paths!
data DirStructure = DirStructure { virthualEnv :: FilePath -- dir containing .virthualenv dir (usually dir with cabal project)
, virthualEnvDir :: FilePath -- .virthualenv dir
, ghcPackagePath :: FilePath -- file (<ghc-6.12) or dir (>=ghc-6.12) containing private GHC pkg db
, cabalDir :: FilePath -- directory with private cabal dir
, cabalBinDir :: FilePath -- cabal's bin/ dir (used in $PATH)
, virthualEnvBinDir :: FilePath -- dir with haskell tools wrappers and activate script
, ghcDir :: FilePath -- directory with private copy of external GHC (only used when using GHC from tarball)
, ghcBinDir :: FilePath -- ghc's bin/ dir (with ghc[i|-pkg]) (only used when using GHC from tarball)
}