H:      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe  SafeP with additional location information required for creating good check messages%All commands available in DockerfilesType of the Dockerfile AST)  !"#$%&'()*(   !"#$%&'())'&#$%*" ! ()  !"#$%&'()*None789:789:789:None:;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 <=>?@ABCD <=>?@ABCD <=>?@ABCD <=>?@ABCDNone'EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk'EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk'EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk'EFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkNone)lPretty print a  to a mPretty print a  to a lmnopqrlmnopqrlmnopqrlmnopqrSafe2stuvwxyz{|}~stuvwy|}~xz{stuvwxyz{|}~stuvwxyz{|}~ None:<= "The type of free monad EDSL blocks The type of Identity based EDSL blocks'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++++None 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 |]  None None:0/0' NoneNoneV   !"#&'()jklmVjklm  !'&#"()None:<= !"#$%&'()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!$%&()*+     ^ l k h ` q m r s j i Y n w _ }        2language-dockerfile-0.3.6.0-CmkO7zjMeZv6tqSZMDPrezLanguage.DockerfileLanguage.Dockerfile.SyntaxLanguage.Dockerfile.Syntax.LiftLanguage.Dockerfile.NormalizeLanguage.Dockerfile.LexerLanguage.Dockerfile.ParserLanguage.Dockerfile.PrettyPrintLanguage.Dockerfile.EDSL.TypesLanguage.Dockerfile.EDSLLanguage.Dockerfile.EDSL.QuasiLanguage.Dockerfile.BashLanguage.Dockerfile.RulesLanguage.Dockerfile.FormatCheckLanguage.Dockerfile.PredefPaths_language_dockerfile PrettyPrint Language.Dockerfile.EDSL.PluginsbaseControl.Monad.IO.ClassliftIO$parsec-3.1.11-37j7M1YEHqtEooY7BpJdriText.Parsec.Error ParseErrorInstructionPos LinenumberFilename InstructionFromAddUserLabel StopsignalCopyRunCmdWorkdirExposeVolume Entrypoint MaintainerEnvArgCommentOnBuildEOLPairs Arguments DestinationSource Dockerfile BaseImage UntaggedImage TaggedImage DigestedImage DirectoryPortsPortStrTagImage instruction sourcename$fIsStringPorts $fShowPorts $fEqPorts $fOrdPorts $fEqBaseImage$fOrdBaseImage$fShowBaseImage$fEqInstruction$fOrdInstruction$fShowInstruction$fEqInstructionPos$fOrdInstructionPos$fShowInstructionPos $fLiftPorts$fLiftBaseImage$fLiftInstruction$fLiftInstructionPosnormalizeEscapedLineslexerreserved reservedOpnaturalcommaSep stringLiteralbrackets identifierlexemecomment 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 EDockerfileTM EDockerfileM stopSignalrunArgscmdArgsentrypointArgs onBuildRawembedrunDockerWriterrunDockerWriterIOrunDefrunDef2runDinstructionPos toDockerfiletoDockerfileStruntaggedtaggeddigestedportsportonBuildtoDockerfileIOtoDockerfileStrIOrunDockerfileIOrunDockerfileStrIO edockerfile edockerfileE dockerfileE filterEOL shellcheckRuleCheckmetadatafilename linenumbersuccessMetadatacodeseveritymessagelinkmapInstructionsinstructionRuledockerfileRuleanalyzerulescommentMetadatashellcheckBash bashCommandsabsoluteWorkdir hasMaintainer usingProgram multipleCmdsmultipleEntrypoints wgetOrCurl invalidCmd noRootUsernoCdnoSudo noUpgrade noUntagged noLatestTagaptGetVersionPinnedaptGetPackages aptGetCleanupuseAdd invalidPortmaintainerAddresspipVersionPinnedisAptGetInstall aptGetYesaptGetNoRecommends isArchiveisUrlcopyInsteadAdd $fOrdCheck $fEqMetadata $fEqCheck formatCheckappendLnIfMissing dockerIgnoreaddGlobcopyGlob stackBuild stackBuild'nodejsnodejs'catchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameescapePlaceHolder escapeSeqreplacecount trimLinesreplaceEscapeSignsremoveEscapePlaceholdercompensateLinebreaksGHC.BaseString formatPos