C6      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr s t u v w x y z { | } ~  Safe  NoneNone:Remove new line escapes and join escaped lines together on one line to simplify parsing later on. Escapes are replaced with line breaks to not alter the line numbers.  Safe     Safe P with additional location information required for creating good check messages%All commands available in Dockerfiles(Type of the Dockerfile AST&  !"#$%&'()*+,-./012& ! "#$%&'()*+,-./012&0/.-)*+,('&%$ !"# 12  !"#$%&'()*+,-./012None:0<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk/<=>B@?ACDFEGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij0CDEFG=>?@ABkH<IJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij'<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkNonennnnNoneopqopqopq None'rstuvwxyz{|}~'rstuvwxyz{|}~'rstuvwxyz{|}~'rstuvwxyz{|}~ None)Pretty print a ( to a Pretty print a   to a  Safe2 None:<='Runs the Dockerfile EDSL and returns a  Dockerfile$ you can pretty print or manipulate'runs the Dockerfile EDSL and returns a  using  import Language.Dockerfile main :: IO () main = writeFile "something.dockerfile" $ toDockerfileStr $ do from (tagged "fpco/stack-build" "lts-6.9") add "." "app"language-dockerfile" workdir "appklanguage-dockerfile" run (words "stack build --test --only-dependencies") cmd (words "stack test") ONBUILD Dockerfile instruction3Each nested instruction gets emitted as a separate ONBUILD block v $ do from "node" run "apt-get update" onBuild $ do run "echo more-stuff" run "echo here"  A version of  which allows IO actions A version of  which allows IO actions!Just runs the EDSL's writer monad9Runs the EDSL's writer monad and pretty-prints the result'''' None1Quasiquoter for embedding dockerfiles on the EDSL  putStr $ y $ do from "node" run "apt-get update" [edockerfile| RUN apt-get update CMD node something.js |] NoneNoneR ! "#$%&'()*+,-./012R( !"# )*+,0/.-'&%$12 !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  & ' ( )  +   . / 0  2 3 4 5         2language-dockerfile-0.3.2.0-4KHLXvjjm6K5sQjI4S6iw7Language.DockerfileLanguage.Dockerfile.BashLanguage.Dockerfile.NormalizeLanguage.Dockerfile.LexerLanguage.Dockerfile.SyntaxLanguage.Dockerfile.RulesLanguage.Dockerfile.FormatCheckLanguage.Dockerfile.Syntax.LiftLanguage.Dockerfile.ParserLanguage.Dockerfile.PrettyPrintLanguage.Dockerfile.EDSL.TypesLanguage.Dockerfile.EDSLLanguage.Dockerfile.EDSL.QuasiPaths_language_dockerfile PrettyPrint Language.Dockerfile.EDSL.PluginsbaseControl.Monad.IO.ClassliftIO$parsec-3.1.11-37j7M1YEHqtEooY7BpJdriText.Parsec.Error ParseError shellchecknormalizeEscapedLineslexerreserved reservedOpnaturalcommaSep stringLiteralbrackets identifierlexemeInstructionPos LinenumberFilename InstructionFromAddUserLabel StopsignalCopyRunCmdWorkdirExposeVolume Entrypoint MaintainerEnvArgCommentOnBuildEOLPairs Arguments DestinationSource Dockerfile BaseImage UntaggedImage TaggedImage DigestedImage DirectoryPortTagImage instruction sourcename $fEqBaseImage$fOrdBaseImage$fShowBaseImage$fEqInstruction$fOrdInstruction$fShowInstruction$fEqInstructionPos$fOrdInstructionPos$fShowInstructionPosRuleCheckmetadatafilename linenumbersuccessMetadatacodeseveritymessagelinkmapInstructionsinstructionRuledockerfileRuleanalyzerulescommentMetadatashellcheckBash bashCommandsabsoluteWorkdir hasMaintainer usingProgram multipleCmdsmultipleEntrypoints wgetOrCurl invalidCmd noRootUsernoCdnoSudo noUpgrade noUntagged noLatestTagaptGetVersionPinnedaptGetPackages aptGetCleanupuseAdd invalidPortmaintainerAddresspipVersionPinnedisAptGetInstall aptGetYesaptGetNoRecommends isArchiveisUrlcopyInsteadAdd $fOrdCheck $fEqMetadata $fEqCheck formatCheck$fLiftBaseImage$fLiftInstruction$fLiftInstructionPoscomment taggedImage digestedImage untaggedImage baseImagefromcmdcopy stopsignal quotedValuerawValue singleValuepairpairsremainingPairslabelargenvuseraddexposerununtilEoluntilOccurrenceworkdirvolume maintainer argumentsExecargumentsShell arguments entrypointonbuildeolInstructionparseInstructioncontentseol dockerfile parseString parseFile prettyPrintprettyPrintInstructionPosprettyPrintBaseImageprettyPrintPairsprettyPrintPairprettyPrintArgumentsprettyPrintInstruction EInstruction StopSignalRunArgsCmdArgsEntrypointArgs OnBuildRawEmbed EBaseImageEUntaggedImage ETaggedImageEDigestedImage$fIsStringEBaseImage$fShowEBaseImage$fEqEBaseImage$fOrdEBaseImage$fFunctorEInstructionEInstructionTM EInstructionM stopSignalrunArgscmdArgsentrypointArgs onBuildRawembedrunDockerWriterrunDockerWriterIOrunDefrunDef2runDinstructionPos toDockerfiletoDockerfileStruntaggedtaggeddigestedonBuildtoDockerfileIOtoDockerfileStrIOrunDockerfileIOrunDockerfileStrIO edockerfile edockerfileE dockerfileE filterEOLcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameescapePlaceHolder escapeSeqreplacecount trimLinesreplaceEscapeSignsremoveEscapePlaceholdercompensateLinebreaks formatPosGHC.BaseString