hackage-db 1.4 → 1.5
raw patch · 2 files changed
+10/−5 lines, 2 filesdep +utf8-stringPVP ok
version bump matches the API change (PVP)
Dependencies added: utf8-string
API changes (from Hackage documentation)
Files
- hackage-db.cabal +2/−2
- src/Distribution/Hackage/DB.hs +8/−3
hackage-db.cabal view
@@ -1,5 +1,5 @@ Name: hackage-db-Version: 1.4+Version: 1.5 Copyright: Peter Simons License: BSD3 License-File: LICENSE@@ -45,7 +45,7 @@ Library Build-Depends: base >= 3 && < 5, tar >= 0.4, Cabal, containers,- directory, filepath, bytestring+ directory, filepath, bytestring, utf8-string hs-source-dirs: src Ghc-Options: -Wall Exposed-Modules: Distribution.Hackage.DB
src/Distribution/Hackage/DB.hs view
@@ -23,7 +23,9 @@ import qualified Codec.Archive.Tar as Tar import Data.ByteString.Lazy.Char8 ( ByteString )-import qualified Data.ByteString.Lazy.Char8 as BS+import qualified Data.ByteString.Lazy.Char8 as BS8+import qualified Data.ByteString.Lazy as BSC+import Data.String.UTF8 ( toString, fromRep ) import Data.Map import Data.Maybe import Data.Version@@ -54,13 +56,16 @@ -- 'Hackage' map that provides fast access to its contents. readHackage' :: FilePath -> IO Hackage-readHackage' = fmap parseHackage . BS.readFile+readHackage' = fmap parseHackage . BS8.readFile -- | Parse the contents of Hackage's @00-index.tar@ into a 'Hackage' map. parseHackage :: ByteString -> Hackage parseHackage = Tar.foldEntries addEntry empty (error . show) . Tar.read where+ decodeUTF8 :: ByteString -> String+ decodeUTF8 = toString . fromRep . BSC.unpack+ addEntry :: Tar.Entry -> Hackage -> Hackage addEntry e db = case splitDirectories (Tar.entryPath e) of [".",".","@LongLink"] -> db@@ -73,7 +78,7 @@ add name version pkg = insertWith union name (singleton (pVersion version) (pPackage name pkg)) pPackage :: String -> ByteString -> GenericPackageDescription- pPackage name buf = case parsePackageDescription (BS.unpack buf) of+ pPackage name buf = case parsePackageDescription (decodeUTF8 buf) of ParseOk _ a -> a ParseFailed err -> error ("Hackage.DB.parseHackage: cannot parse cabal file " ++ show name ++ ": " ++ show err)