pantry 0.5.3 → 0.5.4
raw patch · 6 files changed
+47/−17 lines, 6 filesdep ~CabalPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: Cabal
API changes (from Hackage documentation)
+ Pantry.Internal.AesonExtended: data Key
- Pantry.Internal.AesonExtended: (.:!) :: FromJSON a => Object -> Text -> Parser (Maybe a)
+ Pantry.Internal.AesonExtended: (.:!) :: FromJSON a => Object -> Key -> Parser (Maybe a)
- Pantry.Internal.AesonExtended: (.=) :: (KeyValue kv, ToJSON v) => Text -> v -> kv
+ Pantry.Internal.AesonExtended: (.=) :: (KeyValue kv, ToJSON v) => Key -> v -> kv
- Pantry.Internal.AesonExtended: ToJSONKeyText :: !a -> Text -> !a -> Encoding' Text -> ToJSONKeyFunction a
+ Pantry.Internal.AesonExtended: ToJSONKeyText :: !a -> Key -> !a -> Encoding' Key -> ToJSONKeyFunction a
- Pantry.Internal.AesonExtended: type Object = HashMap Text Value
+ Pantry.Internal.AesonExtended: type Object = KeyMap Value
Files
- ChangeLog.md +4/−0
- pantry.cabal +1/−3
- src/Pantry/Internal/AesonExtended.hs +24/−5
- src/Pantry/Repo.hs +2/−2
- src/Pantry/Storage.hs +2/−3
- src/Pantry/Types.hs +14/−4
ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for pantry +## v0.5.4++* Support aeson 2+ ## v0.5.3 * improve and expose `fetchRepos`/`fetchReposRaw`
pantry.cabal view
@@ -3,11 +3,9 @@ -- This file has been generated from package.yaml by hpack version 0.34.4. -- -- see: https://github.com/sol/hpack------ hash: 290314cf42f0f169e5cb395c4b35e867438c4e2652df972ec59c548dc39f1b6d name: pantry-version: 0.5.3+version: 0.5.4 synopsis: Content addressable Haskell package management description: Please see the README on Github at <https://github.com/commercialhaskell/pantry#readme> category: Development
src/Pantry/Internal/AesonExtended.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE DeriveGeneric #-}@@ -35,7 +36,6 @@ import Data.Aeson as Export hiding ((.:), (.:?)) import qualified Data.Aeson as A import Data.Aeson.Types hiding ((.:), (.:?))-import qualified Data.HashMap.Strict as HashMap import qualified Data.Set as Set import Data.Text (unpack) import qualified Data.Text as T@@ -43,14 +43,33 @@ import RIO import RIO.PrettyPrint.StylesUpdate (StylesUpdate) +#if MIN_VERSION_aeson(2, 0, 0)+import qualified Data.Aeson.Key+import qualified Data.Aeson.KeyMap as HashMap++keyToText :: Data.Aeson.Key.Key -> Text+keyToText = Data.Aeson.Key.toText++textToKey :: Text -> Data.Aeson.Key.Key+textToKey = Data.Aeson.Key.fromText+#else+import qualified Data.HashMap.Strict as HashMap++keyToText :: Text -> Text+keyToText = id++textToKey :: Text -> Text+textToKey = id+#endif+ -- | Extends @.:@ warning to include field name. (.:) :: FromJSON a => Object -> Text -> Parser a-(.:) o p = modifyFailure (("failed to parse field '" <> unpack p <> "': ") <>) (o A..: p)+(.:) o p = modifyFailure (("failed to parse field '" <> unpack p <> "': ") <>) (o A..: textToKey p) {-# INLINE (.:) #-} -- | Extends @.:?@ warning to include field name. (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a)-(.:?) o p = modifyFailure (("failed to parse field '" <> unpack p <> "': ") <>) (o A..:? p)+(.:?) o p = modifyFailure (("failed to parse field '" <> unpack p <> "': ") <>) (o A..:? textToKey p) {-# INLINE (.:?) #-} -- | 'WarningParser' version of @.:@.@@ -74,7 +93,7 @@ fmap (, a) (fmap fst p .!= d) presentCount :: Object -> [Text] -> Int-presentCount o ss = length . filter (\x -> HashMap.member x o) $ ss+presentCount o ss = length . filter (\x -> HashMap.member (textToKey x) o) $ ss -- | Synonym version of @..:@. (...:) :: FromJSON a => Object -> [Text] -> WarningParser a@@ -121,7 +140,7 @@ let unrecognizedFields = Set.toList (Set.difference- (Set.fromList (HashMap.keys obj))+ (Set.fromList (map keyToText (HashMap.keys obj))) (wpmExpectedFields w)) return (WithJSONWarnings a
src/Pantry/Repo.hs view
@@ -81,7 +81,7 @@ :: RIO env Package -> RIO env Package withCache inner = do- mtid <- withStorage (loadRepoCache repo (repoSubdir repo))+ mtid <- withStorage (loadRepoCache repo) case mtid of Just tid -> withStorage $ loadPackageById (RPLIRepo repo pm) tid Nothing -> do@@ -123,7 +123,7 @@ where withCache inner = do pkgs <- forM repoSubdirs $ \(subdir, rpm) -> withStorage $ do- loadRepoCache (Repo sRepoUrl sRepoCommit sRepoType subdir) subdir >>= \case+ loadRepoCache (Repo sRepoUrl sRepoCommit sRepoType subdir) >>= \case Just tid -> fmap Right $ (, subdir) <$> loadPackageById (RPLIRepo (Repo sRepoUrl sRepoCommit sRepoType subdir) rpm) tid Nothing -> pure $ Left (subdir, rpm) let (missingPkgs, cachedPkgs) = partitionEithers pkgs
src/Pantry/Storage.hs view
@@ -991,13 +991,12 @@ loadRepoCache :: Repo- -> Text -- ^ subdir -> ReaderT SqlBackend (RIO env) (Maybe TreeId)-loadRepoCache repo subdir = fmap (repoCacheTree . entityVal) <$> selectFirst+loadRepoCache repo = fmap (repoCacheTree . entityVal) <$> selectFirst [ RepoCacheUrl ==. repoUrl repo , RepoCacheType ==. repoType repo , RepoCacheCommit ==. repoCommit repo- , RepoCacheSubdir ==. subdir+ , RepoCacheSubdir ==. repoSubdir repo ] [Desc RepoCacheTime]
src/Pantry/Types.hs view
@@ -129,7 +129,6 @@ import RIO.List (intersperse, groupBy) import RIO.Time (toGregorian, Day, UTCTime) import qualified RIO.Map as Map-import qualified RIO.HashMap as HM import qualified Data.Map.Strict as Map (mapKeysMonotonic) import qualified RIO.Set as Set import Data.Aeson.Types (toJSONKeyText, Parser)@@ -164,6 +163,17 @@ import Database.Persist.SqlBackend.Internal (connRDBMS) #endif +#if MIN_VERSION_aeson(2, 0, 0)+import qualified Data.Aeson.KeyMap as HM+import qualified Data.Aeson.Key++type AesonKey = Data.Aeson.Key.Key+#else+import qualified RIO.HashMap as HM++type AesonKey = Text+#endif+ -- | Parsed tree with more information on the Haskell package it contains. -- -- @since 0.1.0.0@@ -646,7 +656,7 @@ instance Display BlobKey where display (BlobKey sha size') = display sha <> "," <> display size' -blobKeyPairs :: BlobKey -> [(Text, Value)]+blobKeyPairs :: BlobKey -> [(AesonKey, Value)] blobKeyPairs (BlobKey sha size') = [ "sha256" .= sha , "size" .= size'@@ -679,7 +689,7 @@ instance ToJSONKey PackageNameP where toJSONKey = ToJSONKeyText- (T.pack . packageNameString . unPackageNameP)+ (fromString . packageNameString . unPackageNameP) (unsafeToEncoding . getUtf8Builder . display) instance FromJSONKey PackageNameP where fromJSONKey = FromJSONKeyText $ PackageNameP . mkPackageName . T.unpack@@ -1600,7 +1610,7 @@ RepoGit -> "git" RepoHg -> "hg" -rpmToPairs :: RawPackageMetadata -> [(Text, Value)]+rpmToPairs :: RawPackageMetadata -> [(AesonKey, Value)] rpmToPairs (RawPackageMetadata mname mversion mtree) = concat [ maybe [] (\name -> ["name" .= CabalString name]) mname , maybe [] (\version -> ["version" .= CabalString version]) mversion