Collect hash during creating an archive
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
v. 2.0. If a copy of the MPL was not distributed with this file, You can
|
||||
obtain one at https://mozilla.org/MPL/2.0/. -}
|
||||
|
||||
-- | Contains routines for downloading, cloning and uploading sources.
|
||||
module SlackBuilder.Download
|
||||
( cloneAndUpload
|
||||
, extractRemote
|
||||
@ -10,6 +11,7 @@ module SlackBuilder.Download
|
||||
, hostedSources
|
||||
, remoteFileExists
|
||||
, responseBodySource
|
||||
, sinkFileAndHash
|
||||
, sinkHash
|
||||
, updateSlackBuildVersion
|
||||
, uploadCommand
|
||||
@ -66,7 +68,7 @@ import Conduit
|
||||
, (.|)
|
||||
, ZipSink(..)
|
||||
, await
|
||||
, sourceFile
|
||||
, sourceFile, MonadResource
|
||||
)
|
||||
import Data.Conduit.Tar (untar, FileInfo(..))
|
||||
import Crypto.Hash (Digest, MD5, hashInit, hashFinalize, hashUpdate)
|
||||
@ -244,9 +246,14 @@ download uri packagePath = runReq defaultHttpConfig go
|
||||
target = packagePath </> fromMaybe downloadFileName attachmentName
|
||||
digest <- runConduitRes
|
||||
$ responseBodySource response
|
||||
.| getZipSink (ZipSink (sinkFile target) *> ZipSink sinkHash)
|
||||
.| sinkFileAndHash target
|
||||
pure (targetFileName, digest)
|
||||
|
||||
-- | Writes a file to the destination path and accumulates its MD5 checksum.
|
||||
sinkFileAndHash :: MonadResource m => FilePath -> ConduitT ByteString Void m (Digest MD5)
|
||||
sinkFileAndHash target = getZipSink
|
||||
$ ZipSink (sinkFile target) *> ZipSink sinkHash
|
||||
|
||||
-- | Downloads a compressed tar archive and extracts its contents on the fly to
|
||||
-- a directory.
|
||||
--
|
||||
|
@ -2,6 +2,7 @@
|
||||
v. 2.0. If a copy of the MPL was not distributed with this file, You can
|
||||
obtain one at https://mozilla.org/MPL/2.0/. -}
|
||||
|
||||
-- | Contains data describing packages and how they are should be updated,
|
||||
module SlackBuilder.Package
|
||||
( DownloadPlaceholder(..)
|
||||
, Download(..)
|
||||
|
Reference in New Issue
Block a user