buffet-0.2.0: src/Buffet/Parse/ParseHealthCheck.hs
module Buffet.Parse.ParseHealthCheck
( get
) where
import qualified Data.Maybe as Maybe
import qualified Data.Text as T
import qualified Language.Docker as Docker
import qualified Language.Docker.Syntax as Syntax
import Prelude (Maybe(Just, Nothing), ($), (.), reverse)
get :: Docker.Dockerfile -> Maybe T.Text
get stage =
case lastHealthcheck stage of
Just (Docker.Check checkArguments) ->
Just . reviveCommandStyle . argumentsText $
Docker.checkCommand checkArguments
_ -> Nothing
reviveCommandStyle :: T.Text -> T.Text
reviveCommandStyle = reviveLineBreaks
where
reviveLineBreaks = T.replace (T.pack " ") $ T.pack " \\\n "
lastHealthcheck :: Docker.Dockerfile -> Maybe (Docker.Check T.Text)
lastHealthcheck = Maybe.listToMaybe . reverse . Maybe.mapMaybe maybeHealthcheck
where
maybeHealthcheck (Docker.InstructionPos (Docker.Healthcheck check) _ _) =
Just check
maybeHealthcheck _ = Nothing
argumentsText :: Docker.Arguments T.Text -> T.Text
argumentsText (Syntax.ArgumentsText text) = text
argumentsText (Syntax.ArgumentsList list) = list