[commit: Cabal] master: Parse filepaths in the config file the same way as in .cabal files (974e2f3)
Ian Lynagh
igloo at earth.li
Fri Jun 24 01:51:45 CEST 2011
Repository : ssh://darcs.haskell.org//srv/darcs/packages/Cabal
On branch : master
http://hackage.haskell.org/trac/ghc/changeset/974e2f32bd3e1f217e9c108e4a2f0ae9fdae0f04
>---------------------------------------------------------------
commit 974e2f32bd3e1f217e9c108e4a2f0ae9fdae0f04
Author: Duncan Coutts <duncan at haskell.org>
Date: Wed Mar 12 13:53:35 2008 +0000
Parse filepaths in the config file the same way as in .cabal files
That is, allow quoted and unquoted paths.
>---------------------------------------------------------------
cabal-install/Hackage/Config.hs | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/cabal-install/Hackage/Config.hs b/cabal-install/Hackage/Config.hs
index 074fb05..d1b1399 100644
--- a/cabal-install/Hackage/Config.hs
+++ b/cabal-install/Hackage/Config.hs
@@ -32,9 +32,12 @@ import Text.PrettyPrint.HughesPJ (text)
import Distribution.Compat.ReadP (ReadP, char, munch1, readS_to_P)
import Distribution.Compiler (CompilerFlavor(..), defaultCompilerFlavor)
import Distribution.PackageDescription.Parse (ParseResult(..))
-import Distribution.ParseUtils (FieldDescr(..), simpleField, listField, liftField, field)
+import Distribution.ParseUtils
+ ( FieldDescr(..), simpleField, listField, liftField, field
+ , parseFilePathQ, parseTokenQ )
import Distribution.Simple.Compiler (PackageDB(..))
-import Distribution.Simple.InstallDirs (InstallDirs(..), PathTemplate, toPathTemplate)
+import Distribution.Simple.InstallDirs
+ ( InstallDirs(..), PathTemplate, toPathTemplate, fromPathTemplate )
import Distribution.Simple.Setup (Flag(..), toFlag, fromFlag, fromFlagOrDefault)
import qualified Distribution.Simple.Setup as Cabal
import Distribution.Verbosity (Verbosity, normal)
@@ -195,16 +198,17 @@ configWriteFieldDescrs =
(text . showRepo) parseRepo
configRemoteRepos (\rs cfg -> cfg { configRemoteRepos = rs })
, simpleField "cachedir"
- (text . show . fromFlagOrDefault "") (fmap emptyToNothing $ readS_to_P reads)
+ (text . show . fromFlagOrDefault "")
+ (fmap emptyToNothing parseFilePathQ)
configCacheDir (\d cfg -> cfg { configCacheDir = d })
, boolField "user-install" (fromFlag . configUserInstall) (\u cfg -> cfg { configUserInstall = toFlag u })
, simpleField "hackage-username"
(text . show . fromFlagOrDefault "")
- (fmap emptyToNothing $ readS_to_P reads)
+ (fmap emptyToNothing parseTokenQ)
configUploadUsername (\d cfg -> cfg { configUploadUsername = d })
, simpleField "hackage-password"
(text . show . fromFlagOrDefault "")
- (fmap emptyToNothing $ readS_to_P reads)
+ (fmap emptyToNothing parseTokenQ)
configUploadPassword (\d cfg -> cfg { configUploadPassword = d })
]
where emptyToNothing "" = mempty
@@ -239,8 +243,9 @@ installDirField :: String
-> (Flag PathTemplate -> InstallDirs (Flag PathTemplate) -> InstallDirs (Flag PathTemplate))
-> FieldDescr (InstallDirs (Flag PathTemplate))
installDirField name get set =
- liftField get set $ field name (text . show . fromFlag)
- (fmap toFlag $ readS_to_P reads)
+ liftField get set $
+ field name (text . fromPathTemplate . fromFlag)
+ (fmap (toFlag . toPathTemplate) parseFilePathQ)
modifyFieldName :: (String -> String) -> FieldDescr a -> FieldDescr a
modifyFieldName f d = d { fieldName = f (fieldName d) }
More information about the Cvs-libraries
mailing list