configuration-tools 0.2.13 → 0.2.14
raw patch · 5 files changed
+217/−44 lines, 5 filesdep ~http-clientsetup-changedPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: http-client
API changes (from Hackage documentation)
- Configuration.Utils: runConfigValidation :: ConfigValidationFunction α λ -> ConfigValidation α λ
- Configuration.Utils.ConfigFile: _cfcHttpsPolicy :: ConfigFilesConfig -> !HttpsCertPolicy
- Configuration.Utils.ConfigFile: getConfigFile :: ConfigFile -> !Text
- Configuration.Utils.ConfigFile: instance Eq ConfigFile
- Configuration.Utils.ConfigFile: instance Eq ConfigFilesConfig
- Configuration.Utils.ConfigFile: instance Ord ConfigFile
- Configuration.Utils.ConfigFile: instance Read ConfigFile
- Configuration.Utils.ConfigFile: instance Show ConfigFile
- Configuration.Utils.ConfigFile: instance Show ConfigFilesConfig
- Configuration.Utils.ConfigFile: instance Typeable ConfigFile
- Configuration.Utils.ConfigFile: instance Typeable ConfigFilesConfig
- Configuration.Utils.Http: instance Eq HttpClientConfiguration
- Configuration.Utils.Http: instance Eq HttpServiceConfiguration
- Configuration.Utils.Http: instance Eq HttpServiceTLSConfiguration
- Configuration.Utils.Http: instance FromJSON (HttpClientConfiguration -> HttpClientConfiguration)
- Configuration.Utils.Http: instance FromJSON (HttpServiceConfiguration -> HttpServiceConfiguration)
- Configuration.Utils.Http: instance FromJSON (HttpServiceTLSConfiguration -> HttpServiceTLSConfiguration)
- Configuration.Utils.Http: instance FromJSON HttpServiceTLSConfiguration
- Configuration.Utils.Http: instance Ord HttpClientConfiguration
- Configuration.Utils.Http: instance Ord HttpServiceConfiguration
- Configuration.Utils.Http: instance Ord HttpServiceTLSConfiguration
- Configuration.Utils.Http: instance Read HttpClientConfiguration
- Configuration.Utils.Http: instance Read HttpServiceConfiguration
- Configuration.Utils.Http: instance Read HttpServiceTLSConfiguration
- Configuration.Utils.Http: instance Show HttpClientConfiguration
- Configuration.Utils.Http: instance Show HttpServiceConfiguration
- Configuration.Utils.Http: instance Show HttpServiceTLSConfiguration
- Configuration.Utils.Http: instance ToJSON HttpClientConfiguration
- Configuration.Utils.Http: instance ToJSON HttpServiceConfiguration
- Configuration.Utils.Http: instance ToJSON HttpServiceTLSConfiguration
- Configuration.Utils.Internal.ConfigFileReader: instance Bounded ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Constructor C1_0ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Constructor C1_1ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Constructor C1_2ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Datatype D1ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Enum ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Eq ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Generic ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance NFData ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Ord ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Read ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Show ConfigFileFormat
- Configuration.Utils.Internal.ConfigFileReader: instance Typeable ConfigFileFormat
- Configuration.Utils.Internal.HttpsCertPolicy: _certPolicyHostFingerprints :: HttpsCertPolicy -> !(HashMap ServiceID Fingerprint)
- Configuration.Utils.Internal.HttpsCertPolicy: _certPolicyInsecure :: HttpsCertPolicy -> !Bool
- Configuration.Utils.Internal.HttpsCertPolicy: instance Eq HttpsCertPolicy
- Configuration.Utils.Internal.HttpsCertPolicy: instance Eq VerboseTlsException
- Configuration.Utils.Internal.HttpsCertPolicy: instance Exception VerboseTlsException
- Configuration.Utils.Internal.HttpsCertPolicy: instance Ord VerboseTlsException
- Configuration.Utils.Internal.HttpsCertPolicy: instance Show HttpsCertPolicy
- Configuration.Utils.Internal.HttpsCertPolicy: instance Show VerboseTlsException
- Configuration.Utils.Internal.HttpsCertPolicy: instance Typeable HttpsCertPolicy
- Configuration.Utils.Internal.HttpsCertPolicy: instance Typeable VerboseTlsException
- Configuration.Utils.Maybe: instance (FromJSON (a -> a), FromJSON a) => FromJSON (Maybe a -> Maybe a)
- Configuration.Utils.Monoid: instance (FromJSON α, Monoid α) => FromJSON (LeftMonoidalUpdate α -> LeftMonoidalUpdate α)
- Configuration.Utils.Monoid: instance (FromJSON α, Monoid α) => FromJSON (RightMonoidalUpdate α -> RightMonoidalUpdate α)
- Configuration.Utils.Monoid: instance Monoid α => Monoid (LeftMonoidalUpdate α)
- Configuration.Utils.Monoid: instance Monoid α => Monoid (RightMonoidalUpdate α)
+ Configuration.Utils: [runConfigValidation] :: ConfigValidationFunction α λ -> ConfigValidation α λ
+ Configuration.Utils.ConfigFile: [_cfcHttpsPolicy] :: ConfigFilesConfig -> !HttpsCertPolicy
+ Configuration.Utils.ConfigFile: [getConfigFile] :: ConfigFile -> !Text
+ Configuration.Utils.ConfigFile: instance GHC.Classes.Eq Configuration.Utils.ConfigFile.ConfigFile
+ Configuration.Utils.ConfigFile: instance GHC.Classes.Eq Configuration.Utils.ConfigFile.ConfigFilesConfig
+ Configuration.Utils.ConfigFile: instance GHC.Classes.Ord Configuration.Utils.ConfigFile.ConfigFile
+ Configuration.Utils.ConfigFile: instance GHC.Read.Read Configuration.Utils.ConfigFile.ConfigFile
+ Configuration.Utils.ConfigFile: instance GHC.Show.Show Configuration.Utils.ConfigFile.ConfigFile
+ Configuration.Utils.ConfigFile: instance GHC.Show.Show Configuration.Utils.ConfigFile.ConfigFilesConfig
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.FromJSON (Configuration.Utils.Http.HttpClientConfiguration -> Configuration.Utils.Http.HttpClientConfiguration)
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.FromJSON (Configuration.Utils.Http.HttpServiceConfiguration -> Configuration.Utils.Http.HttpServiceConfiguration)
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.FromJSON (Configuration.Utils.Http.HttpServiceTLSConfiguration -> Configuration.Utils.Http.HttpServiceTLSConfiguration)
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.FromJSON Configuration.Utils.Http.HttpServiceTLSConfiguration
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.ToJSON Configuration.Utils.Http.HttpClientConfiguration
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.ToJSON Configuration.Utils.Http.HttpServiceConfiguration
+ Configuration.Utils.Http: instance Data.Aeson.Types.Class.ToJSON Configuration.Utils.Http.HttpServiceTLSConfiguration
+ Configuration.Utils.Http: instance GHC.Classes.Eq Configuration.Utils.Http.HttpClientConfiguration
+ Configuration.Utils.Http: instance GHC.Classes.Eq Configuration.Utils.Http.HttpServiceConfiguration
+ Configuration.Utils.Http: instance GHC.Classes.Eq Configuration.Utils.Http.HttpServiceTLSConfiguration
+ Configuration.Utils.Http: instance GHC.Classes.Ord Configuration.Utils.Http.HttpClientConfiguration
+ Configuration.Utils.Http: instance GHC.Classes.Ord Configuration.Utils.Http.HttpServiceConfiguration
+ Configuration.Utils.Http: instance GHC.Classes.Ord Configuration.Utils.Http.HttpServiceTLSConfiguration
+ Configuration.Utils.Http: instance GHC.Read.Read Configuration.Utils.Http.HttpClientConfiguration
+ Configuration.Utils.Http: instance GHC.Read.Read Configuration.Utils.Http.HttpServiceConfiguration
+ Configuration.Utils.Http: instance GHC.Read.Read Configuration.Utils.Http.HttpServiceTLSConfiguration
+ Configuration.Utils.Http: instance GHC.Show.Show Configuration.Utils.Http.HttpClientConfiguration
+ Configuration.Utils.Http: instance GHC.Show.Show Configuration.Utils.Http.HttpServiceConfiguration
+ Configuration.Utils.Http: instance GHC.Show.Show Configuration.Utils.Http.HttpServiceTLSConfiguration
+ Configuration.Utils.Internal.ConfigFileReader: instance Control.DeepSeq.NFData Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Classes.Eq Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Classes.Ord Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Enum.Bounded Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Enum.Enum Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Generics.Constructor Configuration.Utils.Internal.ConfigFileReader.C1_0ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Generics.Constructor Configuration.Utils.Internal.ConfigFileReader.C1_1ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Generics.Constructor Configuration.Utils.Internal.ConfigFileReader.C1_2ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Generics.Datatype Configuration.Utils.Internal.ConfigFileReader.D1ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Generics.Generic Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Read.Read Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.ConfigFileReader: instance GHC.Show.Show Configuration.Utils.Internal.ConfigFileReader.ConfigFileFormat
+ Configuration.Utils.Internal.HttpsCertPolicy: [_certPolicyHostFingerprints] :: HttpsCertPolicy -> !(HashMap ServiceID Fingerprint)
+ Configuration.Utils.Internal.HttpsCertPolicy: [_certPolicyInsecure] :: HttpsCertPolicy -> !Bool
+ Configuration.Utils.Internal.HttpsCertPolicy: instance GHC.Classes.Eq Configuration.Utils.Internal.HttpsCertPolicy.HttpsCertPolicy
+ Configuration.Utils.Internal.HttpsCertPolicy: instance GHC.Classes.Eq Configuration.Utils.Internal.HttpsCertPolicy.VerboseTlsException
+ Configuration.Utils.Internal.HttpsCertPolicy: instance GHC.Classes.Ord Configuration.Utils.Internal.HttpsCertPolicy.VerboseTlsException
+ Configuration.Utils.Internal.HttpsCertPolicy: instance GHC.Exception.Exception Configuration.Utils.Internal.HttpsCertPolicy.VerboseTlsException
+ Configuration.Utils.Internal.HttpsCertPolicy: instance GHC.Show.Show Configuration.Utils.Internal.HttpsCertPolicy.HttpsCertPolicy
+ Configuration.Utils.Internal.HttpsCertPolicy: instance GHC.Show.Show Configuration.Utils.Internal.HttpsCertPolicy.VerboseTlsException
+ Configuration.Utils.Maybe: instance (Data.Aeson.Types.Class.FromJSON (a -> a), Data.Aeson.Types.Class.FromJSON a) => Data.Aeson.Types.Class.FromJSON (GHC.Base.Maybe a -> GHC.Base.Maybe a)
+ Configuration.Utils.Monoid: instance (Data.Aeson.Types.Class.FromJSON α, GHC.Base.Monoid α) => Data.Aeson.Types.Class.FromJSON (Configuration.Utils.Monoid.LeftMonoidalUpdate α -> Configuration.Utils.Monoid.LeftMonoidalUpdate α)
+ Configuration.Utils.Monoid: instance (Data.Aeson.Types.Class.FromJSON α, GHC.Base.Monoid α) => Data.Aeson.Types.Class.FromJSON (Configuration.Utils.Monoid.RightMonoidalUpdate α -> Configuration.Utils.Monoid.RightMonoidalUpdate α)
+ Configuration.Utils.Monoid: instance GHC.Base.Monoid α => GHC.Base.Monoid (Configuration.Utils.Monoid.LeftMonoidalUpdate α)
+ Configuration.Utils.Monoid: instance GHC.Base.Monoid α => GHC.Base.Monoid (Configuration.Utils.Monoid.RightMonoidalUpdate α)
- Configuration.Utils.Validation: validateBool :: MonadError Text m => Text -> Bool -> Bool -> m ()
+ Configuration.Utils.Validation: validateBool :: (MonadError Text m) => Text -> Bool -> Bool -> m ()
- Configuration.Utils.Validation: validateFalse :: MonadError Text m => Text -> Bool -> m ()
+ Configuration.Utils.Validation: validateFalse :: (MonadError Text m) => Text -> Bool -> m ()
- Configuration.Utils.Validation: validateTrue :: MonadError Text m => Text -> Bool -> m ()
+ Configuration.Utils.Validation: validateTrue :: (MonadError Text m) => Text -> Bool -> m ()
Files
- CHANGELOG.md +5/−0
- Setup.hs +57/−18
- configuration-tools.cabal +17/−14
- constraints-ghc-8.0.1 +94/−0
- src/Configuration/Utils/Setup.hs +44/−12
CHANGELOG.md view
@@ -1,3 +1,8 @@+0.2.14+======++* Support for GHC-8 and Cabal-1.24+ 0.2.13 ======
Setup.hs view
@@ -1,7 +1,9 @@ -- ------------------------------------------------------ --+-- Copyright © 2015-2016 Lars Kuhtz <lakuhtz@gmail.com> -- Copyright © 2014 AlephCloud Systems, Inc. -- ------------------------------------------------------ -- +{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -129,7 +131,8 @@ import Prelude hiding (readFile, writeFile) -import System.Directory (doesFileExist, doesDirectoryExist, createDirectoryIfMissing)+import System.Directory (doesFileExist, doesDirectoryExist, createDirectoryIfMissing, getCurrentDirectory, canonicalizePath)+import System.FilePath (isDrive, (</>), takeDirectory) import System.Exit (ExitCode(ExitSuccess)) #ifndef MIN_VERSION_Cabal@@ -204,12 +207,18 @@ where f = reverse . dropWhile isSpace getVCS :: IO (Maybe RepoType)-getVCS =- doesDirectoryExist ".hg" >>= \x0 -> if x0+getVCS = getCurrentDirectory >>= getVcsOfDir++getVcsOfDir :: FilePath -> IO (Maybe RepoType)+getVcsOfDir d = do+ canonicDir <- canonicalizePath d+ doesDirectoryExist (canonicDir </> ".hg") >>= \x0 -> if x0 then return (Just Mercurial)- else doesDirectoryExist ".git" >>= \x1 -> return $ if x1- then Just Git- else Nothing+ else doesDirectoryExist (canonicDir </> ".git") >>= \x1 -> if x1+ then return $ Just Git+ else if isDrive canonicDir+ then return Nothing+ else getVcsOfDir (takeDirectory canonicDir) flagNameStr :: FlagName -> String flagNameStr (FlagName s) = s@@ -273,7 +282,7 @@ , " licenseText = " <> (pack . show) licenseString , "" , " copyright :: IsString a => a"- , " copyright = \"" <> (pack . copyright) pkgDesc <> "\""+ , " copyright = " <> (pack . show . copyright) pkgDesc , "" , " author :: IsString a => a" , " author = \"" <> (pack . author) pkgDesc <> "\""@@ -358,21 +367,51 @@ else return "" #ifdef NO_CABAL_MACROS--- The name and the type of the @licenseFile :: String@ field of 'PackageDescription' changed--- in Cabal version 1.20 to @licenseFiles :: [String]@. Both versions are used with GHC-7.8.--- When compiling @Setup.hs@ the @MIN_VERSION_...@ macros are not available. This function is an--- ugly hack to do conditional compilation without CPP.+-- The name and the type of the @licenseFile :: String@ field of+-- 'PackageDescription' changed in Cabal version 1.20 to @licenseFiles ::+-- [String]@. Both versions are used with GHC-7.8. In Cabal version 1.24 the+-- number of constructor fields changed for PackageDescription. When compiling+-- @Setup.hs@ the @MIN_VERSION_...@ macros are not available. This function is+-- an ugly hack to do conditional compilation without CPP. It depends on the+-- @RecordWildCards@ and @Typeable@ extensions and abuses shaddowing of+-- existing symbols. ----- It will break if the number of record fields changes. If that's the case we will probably--- have to either+-- Alternative methods would include: ----- * Use typeable to pattern match on the number of constructor arguments for 'PackageDescription',--- * use TH hacks ala @$( if versionBranch cabalVersion < [...] ... )@, and/or--- * make guesses about the cabal version based on the @__GLASGOW_HASKELL__@ macro.+-- * Use typeable to pattern match on the number of constructor arguments for+-- 'PackageDescription',+-- * use TH hacks ala @$( if versionBranch cabalVersion < [...] ... )@, and/or+-- * make guesses about the cabal version based on the @__GLASGOW_HASKELL__@+-- macro.++-- Return license files of from the @PackageDescription@. -- getLicenseFiles :: PackageDescription -> [FilePath]-getLicenseFiles (PackageDescription _ _ l _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) =- fromMaybe (error "unsupport Cabal library version") $ cast l <|> (return <$> cast l)+getLicenseFiles pkgDesc = f pkgDesc+ where+ -- Recent versions of @PackageDescription@ define a @licenseFiles@ field.+ -- For older versions the function @licenseFiles@ that is defined below is+ -- used.+ --+ f PackageDescription{..} = licenseFiles++ -- If @PackageDescription@ doesn't define @licenseFiles@ this definition+ -- will be used. In that case @PackageDescription@ is assumed to define+ -- @licenseFile@.+ --+ licenseFiles :: [FilePath]+ licenseFiles = fromMaybe (error "unsupported Cabal library version") $+ return <$> cast (g pkgDesc)++ g PackageDescription{..} = licenseFile++ -- The only purpose of this function is to ensure that licenseFile is+ -- defined in case PackageDescription doesn't have a @licenseFile@ field.+ -- This function won't be called with any supported version of the Cabal+ -- library.+ --+ licenseFile :: [FilePath]+ licenseFile = error "unexpected Cabal library version" #endif hgInfo :: IO (String, String, String)
configuration-tools.cabal view
@@ -1,11 +1,11 @@ -- ------------------------------------------------------ ----- Copyright © 2015 Lars Kuhtz <lakuhtz@gmail.com>+-- Copyright © 2015-2016 Lars Kuhtz <lakuhtz@gmail.com> -- Copyright © 2014-2015 AlephCloud Systems, Inc. -- ------------------------------------------------------ -- -Name: configuration-tools-Version: 0.2.13-Synopsis: Tools for specifying and parsing configurations+Name: configuration-tools+Version: 0.2.14+Synopsis: Tools for specifying and parsing configurations description: Tools for specifying and parsing configurations .@@ -28,15 +28,17 @@ and in the API documentation of the modules "Configuration.Utils" and "Configuration.Utils.Setup". -Homepage: https://github.com/alephcloud/hs-configuration-tools-Bug-reports: https://github.com/alephcloud/hs-configuration-tools/issues-License: MIT-License-file: LICENSE-Author: Lars Kuhtz <lakuhtz@gmail.com>-Maintainer: Lars Kuhtz <lakuhtz@gmail.com>-Copyright: Copyright (c) 2015 Lars Kuhtz <lakuhtz@gmail.com>, 2014-2015 AlephCloud, Inc.-Category: Configuration, Console-Build-type: Custom+Homepage: https://github.com/alephcloud/hs-configuration-tools+Bug-reports: https://github.com/alephcloud/hs-configuration-tools/issues+License: MIT+License-file: LICENSE+Author: Lars Kuhtz <lakuhtz@gmail.com>+Maintainer: Lars Kuhtz <lakuhtz@gmail.com>+Copyright:+ (c) 2015-2016 Lars Kuhtz <lakuhtz@gmail.com>,+ (c) 2014-2015 AlephCloud, Inc.+Category: Configuration, Console+Build-type: Custom cabal-version: >= 1.18 @@ -48,6 +50,7 @@ extra-source-files: constraints constraints.old-transformers+ constraints-ghc-8.0.1 source-repository head type: git@@ -57,7 +60,7 @@ source-repository this type: git location: https://github.com/alephcloud/hs-configuration-tools.git- tag: 0.2.13+ tag: 0.2.14 flag remote-configs Description: enable loading of configuration files from HTTP URLs
+ constraints-ghc-8.0.1 view
@@ -0,0 +1,94 @@+constraints: Cabal ==1.23.1.0,+ array ==0.5.1.0,+ base ==4.9.0.0,+ ghc-prim ==0.5.0.0,+ rts ==1.0,+ integer-gmp ==1.0.0.1,+ binary ==0.8.2.0,+ bytestring ==0.10.7.0,+ deepseq ==1.4.2.0,+ containers ==0.5.7.1,+ directory ==1.2.5.0,+ filepath ==1.4.1.0,+ time ==1.6,+ unix ==2.7.2.0,+ pretty ==1.1.3.2,+ process ==1.4.2.0,+ aeson ==0.11.0.0,+ attoparsec ==0.13.0.1,+ scientific ==0.3.4.4,+ hashable ==1.2.4.0,+ text ==1.2.2.0,+ vector ==0.11.0.0,+ primitive ==0.6.1.0,+ transformers ==0.5.1.0,+ dlist ==0.7.1.2,+ fail ==4.9.0.0,+ mtl ==2.2.1,+ syb ==0.6,+ template-haskell ==2.11.0.0,+ ghc-boot ==8.0.0.20160204,+ unordered-containers ==0.2.6.0,+ ansi-wl-pprint ==0.6.7.3,+ ansi-terminal ==0.6.2.3,+ base-unicode-symbols ==0.2.2.4,+ base64-bytestring ==1.0.0.1,+ case-insensitive ==1.2.0.5,+ connection ==0.2.5,+ byteable ==0.1.1,+ data-default-class ==0.0.1,+ network ==2.6.2.1,+ socks ==0.5.4,+ cereal ==0.5.1.0,+ tls ==1.3.4,+ asn1-encoding ==0.9.3,+ asn1-types ==0.3.2,+ hourglass ==0.2.9,+ memory ==0.11,+ async ==2.1.0,+ stm ==2.4.4.1,+ cryptonite ==0.11,+ x509 ==1.6.3,+ asn1-parse ==0.9.4,+ pem ==0.2.2,+ x509-store ==1.6.1,+ x509-validation ==1.6.3,+ x509-system ==1.6.3,+ data-default ==0.5.3,+ data-default-instances-base ==0.0.1,+ data-default-instances-containers ==0.0.1,+ data-default-instances-dlist ==0.0.1,+ data-default-instances-old-locale ==0.0.1,+ old-locale ==1.0.0.7,+ enclosed-exceptions ==1.0.1.1,+ lifted-base ==0.2.3.6,+ monad-control ==1.0.0.5,+ transformers-base ==0.4.4,+ transformers-compat ==0.5.1.4,+ http-client ==0.4.27,+ blaze-builder ==0.4.0.1,+ cookie ==0.4.1.6,+ exceptions ==0.8.2.1,+ http-types ==0.9,+ mime-types ==0.1.0.6,+ network-uri ==2.6.0.3,+ parsec ==3.1.9,+ random ==1.0.1.1,+ streaming-commons ==0.1.15.1,+ zlib ==0.6.1.1,+ http-client-tls ==0.2.2,+ optparse-applicative ==0.12.1.0,+ profunctors ==5.2,+ base-orphans ==0.5.1,+ bifunctors ==5.2.1,+ comonad ==5,+ contravariant ==1.4,+ StateVar ==1.1.0.3,+ semigroups ==0.18.1,+ void ==0.7.1,+ distributive ==0.5.0.2,+ tagged ==0.8.3,+ yaml ==0.8.16,+ conduit ==1.2.6.2,+ mmorph ==1.0.6,+ resourcet ==1.1.7.2
src/Configuration/Utils/Setup.hs view
@@ -1,7 +1,9 @@ -- ------------------------------------------------------ --+-- Copyright © 2015-2016 Lars Kuhtz <lakuhtz@gmail.com> -- Copyright © 2014 AlephCloud Systems, Inc. -- ------------------------------------------------------ -- +{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE CPP #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-}@@ -280,7 +282,7 @@ , " licenseText = " <> (pack . show) licenseString , "" , " copyright :: IsString a => a"- , " copyright = \"" <> (pack . copyright) pkgDesc <> "\""+ , " copyright = " <> (pack . show . copyright) pkgDesc , "" , " author :: IsString a => a" , " author = \"" <> (pack . author) pkgDesc <> "\""@@ -365,21 +367,51 @@ else return "" #ifdef NO_CABAL_MACROS--- The name and the type of the @licenseFile :: String@ field of 'PackageDescription' changed--- in Cabal version 1.20 to @licenseFiles :: [String]@. Both versions are used with GHC-7.8.--- When compiling @Setup.hs@ the @MIN_VERSION_...@ macros are not available. This function is an--- ugly hack to do conditional compilation without CPP.+-- The name and the type of the @licenseFile :: String@ field of+-- 'PackageDescription' changed in Cabal version 1.20 to @licenseFiles ::+-- [String]@. Both versions are used with GHC-7.8. In Cabal version 1.24 the+-- number of constructor fields changed for PackageDescription. When compiling+-- @Setup.hs@ the @MIN_VERSION_...@ macros are not available. This function is+-- an ugly hack to do conditional compilation without CPP. It depends on the+-- @RecordWildCards@ and @Typeable@ extensions and abuses shaddowing of+-- existing symbols. ----- It will break if the number of record fields changes. If that's the case we will probably--- have to either+-- Alternative methods would include: ----- * Use typeable to pattern match on the number of constructor arguments for 'PackageDescription',--- * use TH hacks ala @$( if versionBranch cabalVersion < [...] ... )@, and/or--- * make guesses about the cabal version based on the @__GLASGOW_HASKELL__@ macro.+-- * Use typeable to pattern match on the number of constructor arguments for+-- 'PackageDescription',+-- * use TH hacks ala @$( if versionBranch cabalVersion < [...] ... )@, and/or+-- * make guesses about the cabal version based on the @__GLASGOW_HASKELL__@+-- macro.++-- Return license files of from the @PackageDescription@. -- getLicenseFiles :: PackageDescription -> [FilePath]-getLicenseFiles (PackageDescription _ _ l _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _) =- fromMaybe (error "unsupported Cabal library version") $ cast l <|> (return <$> cast l)+getLicenseFiles pkgDesc = f pkgDesc+ where+ -- Recent versions of @PackageDescription@ define a @licenseFiles@ field.+ -- For older versions the function @licenseFiles@ that is defined below is+ -- used.+ --+ f PackageDescription{..} = licenseFiles++ -- If @PackageDescription@ doesn't define @licenseFiles@ this definition+ -- will be used. In that case @PackageDescription@ is assumed to define+ -- @licenseFile@.+ --+ licenseFiles :: [FilePath]+ licenseFiles = fromMaybe (error "unsupported Cabal library version") $+ return <$> cast (g pkgDesc)++ g PackageDescription{..} = licenseFile++ -- The only purpose of this function is to ensure that licenseFile is+ -- defined in case PackageDescription doesn't have a @licenseFile@ field.+ -- This function won't be called with any supported version of the Cabal+ -- library.+ --+ licenseFile :: [FilePath]+ licenseFile = error "unexpected Cabal library version" #endif hgInfo :: IO (String, String, String)