buffet-0.3.0: src/Buffet/Assemble/JoinConsecutiveRunInstructions.hs
module Buffet.Assemble.JoinConsecutiveRunInstructions
( get
) where
import qualified Buffet.Ir.Ir as Ir
import qualified Data.Text as T
import qualified Language.Docker as Docker
import qualified Language.Docker.Syntax as Syntax
import Prelude (($), foldr, mconcat)
get :: Ir.DockerfilePart -> Ir.DockerfilePart
get = foldr process []
where
process (Docker.Run first) (Docker.Run second:rest) =
Docker.Run (joinRuns first second) : rest
process first rest = first : rest
joinRuns ::
Docker.Arguments T.Text
-> Docker.Arguments T.Text
-> Docker.Arguments T.Text
joinRuns first second =
Syntax.ArgumentsText $
mconcat [command first, T.pack " \\\n && ", command second]
where
command (Syntax.ArgumentsText shell) = shell
command (Syntax.ArgumentsList exec) = exec