wolf 0.3.14 → 0.3.15
raw patch · 3 files changed
+18/−65 lines, 3 filesdep −amazonka-s3
Dependencies removed: amazonka-s3
Files
- src/Network/AWS/Wolf/Act.hs +17/−12
- src/Network/AWS/Wolf/S3.hs +0/−50
- wolf.cabal +1/−3
src/Network/AWS/Wolf/Act.hs view
@@ -14,31 +14,36 @@ import Network.AWS.Wolf.Ctx import Network.AWS.Wolf.File import Network.AWS.Wolf.Prelude-import Network.AWS.Wolf.S3 import Network.AWS.Wolf.SWF import Network.AWS.Wolf.Types import System.Process +-- | S3 copy call.+--+cp :: MonadIO m => FilePath -> FilePath -> m ()+cp f t = liftIO $ callProcess "aws" [ "s3", "cp", "--recursive", f, t ]++-- | Key to download and upload objects from.+--+key :: MonadAmazonStore c m => m FilePath+key = do+ b <- view cBucket <$> view ccConf+ p <- view ascPrefix+ return $ "s3:/" -/- textToString b -/- textToString p+ -- | Download artifacts to the store input directory. -- download :: MonadAmazonStore c m => FilePath -> m () download dir = do- ks <- listArtifacts- forM_ ks $ \k -> do- traceInfo "get-artifact" [ "key" .= k ]- let file = dir </> textToString k- touchDirectory file- getArtifact file k+ traceInfo "download" [ "dir" .= dir ]+ flip cp dir =<< key -- | Upload artifacts from the store output directory. -- upload :: MonadAmazonStore c m => FilePath -> m () upload dir = do- fs <- findRegularFiles dir- forM_ fs $ \f -> do- let k = stripPrefix' (textFromString dir) (textFromString f)- traceInfo "put-artifact" [ "key" .= k ]- traverse (putArtifact f) k+ traceInfo "upload" [ "dir" .= dir ]+ cp dir =<< key -- | callCommand wrapper that maybe returns an exception. --
− src/Network/AWS/Wolf/S3.hs
@@ -1,50 +0,0 @@-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE NoImplicitPrelude #-}---- | S3 Calls.----module Network.AWS.Wolf.S3- ( listArtifacts- , getArtifact- , putArtifact- ) where--import Control.Monad.Trans.AWS-import Data.Conduit-import Data.Conduit.Binary-import Data.Conduit.Combinators hiding (sinkFile, sourceFile)-import Data.Conduit.List hiding (map, mapMaybe)-import Data.Text-import Network.AWS.Data.Body-import Network.AWS.Data.Text-import Network.AWS.S3 hiding (cBucket)-import Network.AWS.Wolf.Prelude-import Network.AWS.Wolf.Types---- | List keys in bucket with prefix.----listArtifacts :: MonadAmazonStore c m => m [Text]-listArtifacts = do- b <- view cBucket <$> view ccConf- p <- view ascPrefix- lors <- paginate (set loPrefix (return p) $ listObjects (BucketName b)) $$ consume- return $ mapMaybe (stripPrefix' p) $ toText . view oKey <$> join (view lorsContents <$> lors)---- | Get object in bucket with key.----getArtifact :: MonadAmazonStore c m => FilePath -> Text -> m ()-getArtifact file key = do- b <- view cBucket <$> view ccConf- p <- view ascPrefix- gors <- send $ getObject (BucketName b) (ObjectKey (p -/- key))- sinkBody (gors ^. gorsBody) (sinkFile file)---- | Put object in bucket with key.----putArtifact :: MonadAmazonStore c m => FilePath -> Text -> m ()-putArtifact file key = do- b <- view cBucket <$> view ccConf- p <- view ascPrefix- (sha, len) <- sourceFile file $$ getZipSink $ (,) <$> ZipSink sinkSHA256 <*> ZipSink lengthE- void $ send $ putObject (BucketName b) (ObjectKey (p -/- key)) $- Hashed $ HashedStream sha len $ sourceFile file
wolf.cabal view
@@ -1,5 +1,5 @@ name: wolf-version: 0.3.14+version: 0.3.15 synopsis: Amazon Simple Workflow Service Wrapper. description: Wolf is a wrapper around Amazon Simple Workflow Service. homepage: https://github.com/swift-nav/wolf@@ -24,7 +24,6 @@ , Network.AWS.Wolf.Decide , Network.AWS.Wolf.File , Network.AWS.Wolf.Prelude- , Network.AWS.Wolf.S3 , Network.AWS.Wolf.SWF , Network.AWS.Wolf.Types , Network.AWS.Wolf.Types.Ctx@@ -36,7 +35,6 @@ build-depends: aeson , amazonka , amazonka-core- , amazonka-s3 , amazonka-swf , base == 4.8.* , bytestring