{-# LANGUAGE OverloadedStrings #-} module Arion.DockerCompose where import Prelude ( ) import Protolude import System.Process data Args = Args { files :: [FilePath] , otherArgs :: [Text] } run :: Args -> IO () run args = do let fileArgs = files args >>= \f -> ["--file", f] allArgs = fileArgs ++ map toS (otherArgs args) procSpec = proc "docker-compose" allArgs -- hPutStrLn stderr ("Running docker-compose with " <> show allArgs :: Text) withCreateProcess procSpec $ \_in _out _err procHandle -> do exitCode <- waitForProcess procHandle case exitCode of ExitSuccess -> pass ExitFailure 1 -> exitFailure ExitFailure {} -> do throwIO $ FatalError $ "docker-compose failed with " <> show exitCode