Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/130cccde742b1880ab5d426611fb207f548d301c

>---------------------------------------------------------------

commit 130cccde742b1880ab5d426611fb207f548d301c
Author: Paolo Losi <[email protected]>
Date:   Mon Feb 23 00:52:51 2009 +0000

    Select Configuration file via env var CABAL_CONFIG.

>---------------------------------------------------------------

 cabal-install/Distribution/Client/Config.hs |   15 +++++++++++++--
 1 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/cabal-install/Distribution/Client/Config.hs 
b/cabal-install/Distribution/Client/Config.hs
index a47e93d..d621162 100644
--- a/cabal-install/Distribution/Client/Config.hs
+++ b/cabal-install/Distribution/Client/Config.hs
@@ -74,7 +74,7 @@ import Data.Maybe
 import Data.Monoid
          ( Monoid(..) )
 import Control.Monad
-         ( when, foldM )
+         ( when, foldM, liftM )
 import qualified Data.Map as Map
 import qualified Distribution.Compat.ReadP as Parse
          ( option )
@@ -88,6 +88,8 @@ import Network.URI
          ( URI(..), URIAuth(..) )
 import System.FilePath
          ( (</>), takeDirectory )
+import System.Environment
+         ( getEnvironment )
 import System.IO.Error
          ( isDoesNotExistError )
 
@@ -228,11 +230,20 @@ defaultRemoteRepo = RemoteRepo name uri
 
 loadConfig :: Verbosity -> Flag FilePath -> Flag Bool -> IO SavedConfig
 loadConfig verbosity configFileFlag userInstallFlag = addBaseConf $ do
-  configFile <- maybe defaultConfigFile return (flagToMaybe configFileFlag)
+  let sources = [
+        ("commandline option",   return . flagToMaybe $ configFileFlag),
+        ("env var CABAL_CONFIG", lookup "CABAL_CONFIG" `liftM` getEnvironment),
+        ("default config file",  Just `liftM` defaultConfigFile) ]
 
+      getSource [] = error "no config file path candidate found."
+      getSource ((msg,action): xs) = 
+                        action >>= maybe (getSource xs) (return . (,) msg)
+
+  (source, configFile) <- getSource sources
   minp <- readConfigFile mempty configFile
   case minp of
     Nothing -> do
+      notice verbosity $ "Config file path source is " ++ source ++ "."
       notice verbosity $ "Config file " ++ configFile ++ " not found."
       notice verbosity $ "Writing default configuration to " ++ configFile
       commentConf <- commentSavedConfig



_______________________________________________
Cvs-libraries mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-libraries

Reply via email to