{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-}
module Antiope.Shell.S3
( putFile
) where
import Antiope.S3.Types (S3Uri)
import Control.Monad.Except
import Data.Monoid ((<>))
import Data.Text as T (Text, pack, unpack)
import Network.AWS.Data.Text (toText)
import qualified System.Exit as IO
import qualified System.Process as IO
putFile :: MonadIO m
=> S3Uri
-> FilePath
-> ExceptT Text m ()
putFile s3Uri filePath = do
exitCode <- liftIO $ IO.rawSystem "aws" ["s3", "cp", "--quiet", filePath, T.unpack (toText s3Uri)]
case exitCode of
IO.ExitSuccess -> return ()
IO.ExitFailure n -> throwError $ "Command failed with exit code: " <> T.pack (show n)