packages feed

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 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)