packages feed

zip-stream 0.1 → 0.1.0.1

raw patch · 4 files changed

+28/−9 lines, 4 filesdep +transformersdep ~basedep ~conduitdep ~conduit-extra

Dependencies added: transformers

Dependency ranges changed: base, conduit, conduit-extra, directory

Files

Codec/Archive/Zip/Conduit/Zip.hs view
@@ -32,7 +32,6 @@ import           Data.Digest.CRC32 (crc32) import           Data.Either (isLeft) import           Data.Maybe (fromMaybe, fromJust)-import           Data.Monoid ((<>)) import           Data.Time (LocalTime(..), TimeOfDay(..), toGregorian) import           Data.Word (Word16, Word64) @@ -95,7 +94,7 @@ -- Any errors are thrown in the underlying monad (as 'ZipError's). zipStream :: (MonadBase b m, PrimMonad b, MonadThrow m) => ZipOptions -> C.ConduitM (ZipEntry, ZipData m) BS.ByteString m Word64 zipStream ZipOptions{..} = execStateC 0 $ do-  (cnt, cdir) <- next 0 (mempty :: P.Put)+  (cnt, cdir) <- next 0 (return ())   cdoff <- get   output cdir   eoff <- get@@ -105,7 +104,7 @@     (return (cnt, dir))     (\e -> do       d <- entry e-      next (succ cnt) $ dir <> d)+      next (succ cnt) $ dir >> d)   entry (ZipEntry{..}, zipData -> dat) = do     let usiz = dataSize dat         sdat = left ((C..| sizeCRC) . C.toProducer) dat
cmd/unzip.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE RecordWildCards #-} import           Control.Monad (when, unless) import           Control.Monad.IO.Class (liftIO)@@ -6,7 +7,11 @@ import qualified Data.Conduit as C import qualified Data.Conduit.Binary as CB import           Data.Time.LocalTime (localTimeToUTC, utc)-import           System.Directory (createDirectoryIfMissing, setModificationTime)+import           System.Directory (createDirectoryIfMissing+#if MIN_VERSION_directory(1,2,3)+  , setModificationTime+#endif+  ) import           System.Environment (getProgName, getArgs) import           System.Exit (exitFailure) import           System.FilePath.Posix (takeDirectory) -- zip files only use forward slashes@@ -26,7 +31,9 @@         mapM_ (liftIO . hSetFileSize h . toInteger) zipEntrySize         write C..| CB.sinkHandle h         liftIO $ hClose h+#if MIN_VERSION_directory(1,2,3)     liftIO $ setModificationTime name $ localTimeToUTC utc zipEntryTime -- FIXME: timezone+#endif     where name = BSC.unpack $ BSC.dropWhile ('/' ==) zipEntryName -- should we utf8 decode?   start (Right _) = fail "Unexpected leading or directory data contents"   write = C.await >>= maybe
cmd/zip.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE CPP #-} import           Control.Monad (filterM, void) import           Control.Monad.IO.Class (MonadIO, liftIO) import           Control.Monad.Trans.Resource (MonadResource, runResourceT)@@ -7,7 +8,13 @@ import           Data.List (foldl') import           Data.Time.LocalTime (utcToLocalTime, utc) import qualified System.Console.GetOpt as Opt-import           System.Directory (doesDirectoryExist, getModificationTime, isSymbolicLink, listDirectory)+import           System.Directory (doesDirectoryExist, getModificationTime+#if MIN_VERSION_directory(1,2,6)+  , isSymbolicLink, listDirectory+#else+  , getDirectoryContents+#endif+  ) import           System.Environment (getProgName, getArgs) import           System.Exit (exitFailure) import           System.FilePath.Posix ((</>)) -- zip files only want forward slashes@@ -38,7 +45,11 @@   isd <- liftIO $ doesDirectoryExist p   if isd     then do+#if MIN_VERSION_directory(1,2,6)       dl <- liftIO $ filterM (fmap not . isSymbolicLink) . map (p </>) =<< listDirectory p+#else+      dl <- liftIO $ filter (`notElem` [".",".."]) . map (p </>) <$> getDirectoryContents p+#endif       C.yield (e{ zipEntryName = zipEntryName e `BSC.snoc` '/', zipEntrySize = Just 0 }, mempty)       generate $ dl ++ paths     else do
zip-stream.cabal view
@@ -1,5 +1,5 @@ name:                zip-stream-version:             0.1+version:             0.1.0.1 synopsis:            ZIP archive streaming using conduits description:         Process (extract and create) zip files as streams (e.g., over the network), accessing contained files without having to write the zip file to disk (unlike zip-conduit). license:             BSD3@@ -7,7 +7,7 @@ author:              Dylan Simon maintainer:          dylan@dylex.net copyright:           2017-category:            Codec+category:            Codec, Conduit build-type:          Simple cabal-version:       >=1.10 @@ -46,13 +46,14 @@   default-language:    Haskell2010   ghc-options: -Wall   build-depends:-    base >=4.7 && <5,+    base >=4.8 && <5,     bytestring,     conduit,     conduit-extra,     directory,     filepath,     time,+    transformers,     zip-stream  executable zip-stream@@ -61,7 +62,7 @@   default-language:    Haskell2010   ghc-options: -Wall   build-depends:-    base >=4.7 && <5,+    base >=4.8 && <5,     bytestring,     conduit,     conduit-extra,@@ -69,4 +70,5 @@     filepath,     resourcet,     time,+    transformers,     zip-stream