[commit: Cabal] master: Select Configuration file via env var CABAL_CONFIG. (130cccd)
Ian Lynagh
igloo at earth.li
Fri Jun 24 02:03:13 CEST 2011
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 <paolo.losi at gmail.com>
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
More information about the Cvs-libraries
mailing list