|hW      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS T U V SafeiRemove 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.WXYNone "3;=FKTa` P with additional location information required for creating good check messages %All commands available in DockerfilesIType of the Dockerfile ASTc   !%$"#&(')+*,-0/.126543789:;<=?>@BACDEFGHIJMLKNOPQRSTUXWVY[Z\]^_`abcedibcdef_`a\]^YZ[UVWXRSTgQNOPJKLMIFGHCDE@ABh=>?i:;<789123456,-./0)*+&'(kj !"#$%     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHJKLMNOPRSTUVWXYZ[\]^_`abcdeNone "#$*;<=^a{Pretty print a I to a ZPretty print a  to a [None"#1\+End parsing signaling a conversion error . ]^_`abcdefNone3None  "<>?a]"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.Docker main :: IO () main = print $ toDockerfileText $ do from (tagged "fpco/stack-build" "lts-6.9") add ["."] "applanguage-docker" workdir "appWlanguage-docker" run "stack build --test --only-dependencies" cmd "stack test" EWrites the dockerfile to the given file path after pretty-printing it import Language.Docker main :: IO () main = writeDockerFile "build.Dockerfile" $ toDockerfile $ do from (tagged "fpco/stack-build" "lts-6.9") add ["."] "applanguage-docker" workdir "appWlanguage-docker" run "stack build --test --only-dependencies" cmd "stack test" CPrints the dockerfile to stdout. Mainly used for debugging purposes import Language.Docker main :: IO () main = putDockerfileStr $ do from (tagged "fpco/stack-build" "lts-6.9") add ["."] "applanguage-docker" workdir "appWlanguage-docker" run "stack build --test --only-dependencies" cmd "stack test" 6Use a docker image in a FROM instruction without a tag)The following two examples are equivalent #from $ untagged "fpco/stack-build" 0Is equivalent to, when having OverloadedStrings: from "fpco/stack-build" _Use a specific tag for a docker image. This function is meant to be used as an infix operator. from $ "fpco/stack-build"  "lts-10.3" nAlias a FROM instruction to be used as a build stage. This function is meant to be used as an infix operator. from $ "fpco/stack-build"  "builder" 2Create a RUN instruction with the given arguments. run "apt-get install wget" :Create an ENTRYPOINT instruction with the given arguments.  entrypoint "usrlocalbinprogram --some-flag" 2Create a CMD instruction with the given arguments. cmd "my-program --some-flag"  SCreate a COPY instruction. This function is meant to be used with the compinators ', % and & copy $ ["foo.js", "bar.js"] ' "." copy $ ["some_file"] ' "somepath" % "builder" !ZCreate a COPY instruction from a given build stage. This is a shorthand version of using   with combinators. 1copyFromStage "builder" ["foo.js", "bar.js"] "." "Create an ADD instruction. This is often used as a shorthand version of copy when no extra options are needed. Currently there is no way to pass extra options to ADD, so you are encouraged to use   instead. add ["foo.js", "bar.js"] "." #:Converts a NonEmpty list of strings to a NonEmpty list of FThis is a convenience function when you need to pass a non-static list of strings that you build somewhere as an argument for   or " 6someFiles <- glob "*.js" copy $ (toSources someFiles) ' "." $Converts a Text into a C[This is a convenience function when you need to pass a string variable as an argument for   or " Jlet destination = buildSomePath pwd add ["foo.js"] (toTarget destination) %.Adds the --from= option to a COPY instruction.7This function is meant to be used as an infix operator: copy $ ["foo.js"] ' "." % "builder" &/Adds the --chown= option to a COPY instruction.7This function is meant to be used as an infix operator: copy $ ["foo.js"] ' "." & "www-data:www-data" '?Usedto join source paths with atarget path as an arguments for  7This function is meant to be used as an infix operator: copy $ ["foo.js"] ' "." & 4ONBUILD 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" 5 A version of  which allows IO actions6 A version of  which allows IO actions7!Just runs the EDSL's writer monad89Runs the EDSL's writer monad and pretty-prints the resultB      !"#$%&'()*+,-./012345678B      !"#$%&'()*+,-./012345678None_:9;<=>?@ABCDEFGHIJKLMNOPQR NonecxS1Quasiquoter for embedding dockerfiles on the EDSL  putStr $ y $ do from "node" run "apt-get update" [edockerfile| RUN apt-get update CMD node something.js |] STUVSTUVNonec   #"$%!&)*+,-./0123456=>?@ABCDEFGHIJKLMNOPQR\_`abcde      !"#$%&'()*+,-./01245678SUI6578" !'%&#$ ./012()*+,-   4 SU JKLMFGHCDE@AB=>?123456,-./0)*+ !"#$%bcde_`aNOP\RQ&  Safehghijklmno !"#$%&'()*+,-./001234567899:;;<=>??@ABCDDEFFGHHIJJKLLMNNOPQRSTUUVWXXYZZ[\]^_``abbcddefghijklmnopqrstuvwxyz{|}~;?$%&')*+-,      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F G H IJKLMNOPQRSTUVWXYZ[\] ^ _ ` a b c d ef,language-docker-6.0.1-2Ko8DtZMO9G669tcyMf4hWLanguage.DockerLanguage.Docker.NormalizeLanguage.Docker.SyntaxLanguage.Docker.PrettyPrintLanguage.Docker.ParserLanguage.Docker.EDSL.TypesLanguage.Docker.EDSLLanguage.Docker.Syntax.LiftLanguage.Docker.EDSL.Quasi Data.TextLazy PrettyPrintPaths_language_dockerbaseControl.Monad.IO.ClassliftIO&megaparsec-6.5.0-1j1Pq3EX3Lmy68pRo470XText.Megaparsec.ErrorparseErrorPrettynormalizeEscapedLinesInstructionPos$sel:instruction:InstructionPos$sel:sourcename:InstructionPos$sel:lineNumber:InstructionPos LinenumberFilename InstructionFromAddUserLabel StopsignalCopyRunCmdShellWorkdirExposeVolume Entrypoint MaintainerEnvArg HealthcheckCommentOnBuildPairs CheckArgs$sel:checkCommand:CheckArgs$sel:interval:CheckArgs$sel:timeout:CheckArgs$sel:startPeriod:CheckArgs$sel:retries:CheckArgs Arguments ArgumentsText ArgumentsListCheckNoCheckAddArgs$sel:sourcePaths:AddArgs$sel:targetPath:AddArgs$sel:chownFlag:AddArgsCopyArgs$sel:sourcePaths:CopyArgs$sel:targetPath:CopyArgs$sel:chownFlag:CopyArgs$sel:sourceFlag:CopyArgsRetries$sel:times:RetriesDuration$sel:durationTime:Duration CopySourceNoSourceChownNoChown TargetPath$sel:unTargetPath:TargetPath SourcePath$sel:unSourcePath:SourcePath Dockerfile BaseImage UntaggedImage TaggedImage DigestedImage ImageAlias$sel:unImageAlias:ImageAlias DirectoryPorts$sel:unPorts:PortsPortPortStr PortRangeProtocolTCPUDPTag$sel:unTag:TagRegistry$sel:unRegistry:RegistryImage$sel:registryName:Image$sel:imageName:Image$fIsStringImage $fIsListPorts$fIsStringChown$fIsStringCopySource$fIsListArguments$fIsStringArguments$fShowRegistry $fEqRegistry $fOrdRegistry$fIsStringRegistry $fShowImage $fEqImage $fOrdImage $fShowTag$fEqTag$fOrdTag $fIsStringTag$fShowProtocol $fEqProtocol $fOrdProtocol $fShowPort$fEqPort $fOrdPort $fShowPorts $fEqPorts $fOrdPorts$fShowImageAlias$fEqImageAlias$fOrdImageAlias$fIsStringImageAlias $fEqBaseImage$fOrdBaseImage$fShowBaseImage$fShowSourcePath$fEqSourcePath$fOrdSourcePath$fIsStringSourcePath$fShowTargetPath$fEqTargetPath$fOrdTargetPath$fIsStringTargetPath $fShowChown $fEqChown $fOrdChown$fShowCopySource$fEqCopySource$fOrdCopySource$fShowDuration $fEqDuration $fOrdDuration $fNumDuration $fShowRetries $fEqRetries $fOrdRetries $fNumRetries$fShowCopyArgs $fEqCopyArgs $fOrdCopyArgs $fShowAddArgs $fEqAddArgs $fOrdAddArgs$fShowArguments $fEqArguments$fOrdArguments$fFunctorArguments$fShowCheckArgs $fEqCheckArgs$fOrdCheckArgs$fFunctorCheckArgs $fShowCheck $fEqCheck $fOrdCheck$fFunctorCheck$fEqInstruction$fOrdInstruction$fShowInstruction$fFunctorInstruction$fEqInstructionPos$fOrdInstructionPos$fShowInstructionPos$fFunctorInstructionPos prettyPrintprettyPrintDockerfileprettyPrintInstructionPosprettyPrintImageprettyPrintBaseImageprettyPrintPairsprettyPrintPairprettyPrintArgumentsprettyPrintJSONprettyPrintPortprettyPrintFileListprettyPrintChownprettyPrintCopySourceprettyPrintDurationprettyPrintRetriesprettyPrintInstructionspaceCat$fPrettyArgumentsErrorParserDockerfileErrorDuplicateFlagErrorNoValueFlagErrorInvalidFlagError FileListError QuoteError parseText parseFile#$fShowErrorComponentDockerfileError$fEqDockerfileError$fDataDockerfileError$fOrdDockerfileError$fReadDockerfileError$fShowDockerfileError EInstruction StopSignalRunArgsCmdArgsEntrypointArgs OnBuildRawEmbed EBaseImageEUntaggedImage ETaggedImageEDigestedImage$fIsStringEBaseImage$fShowEBaseImage$fEqEBaseImage$fOrdEBaseImage$fFunctorEInstructionEInstructionTM EInstructionM EDockerfileTM EDockerfileMfromaddArgsuserlabel stopSignalcopyArgsrunArgscmdArgsshellworkdirexposevolumeentrypointArgs maintainerenvargcomment healthcheck onBuildRawembedrunDockerWriterrunDockerWriterIOrunDefrunDef2runDinstructionPos toDockerfiletoDockerfileTextwriteDockerFileputDockerfileStruntaggedtaggeddigestedaliasedrun entrypointcmdcopy copyFromStageadd toSourcestoTarget fromStageownedBytoportstcpPortudpPort variablePort portRange udpPortRangecheckintervaltimeout startPeriodretriesnoCheckonBuildtoDockerfileIOtoDockerfileTextIOrunDockerfileIOrunDockerfileTextIO $fLiftText$fLiftByteString$fLiftNonEmpty $fLiftFixed$fLiftDiffTime$fLiftProtocol $fLiftPort $fLiftPorts$fLiftRegistry $fLiftImage$fLiftImageAlias $fLiftTag$fLiftBaseImage$fLiftArguments$fLiftInstruction$fLiftInstructionPos$fLiftSourcePath$fLiftTargetPath $fLiftChown$fLiftCopySource$fLiftCopyArgs $fLiftAddArgs$fLiftDuration $fLiftRetries$fLiftCheckArgs $fLiftCheck edockerfile edockerfileE dockerfile dockerfileENormalizedLineContinueJoined#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalText,prettyprinter-1.2.0.1-7ZuCLms8xajGeu88e33QHe"Data.Text.Prettyprint.Doc.InternalDoc customError CheckFlag FlagInterval FlagTimeoutFlagStartPeriod FlagRetries CFlagInvalidCopyFlag FlagChown FlagSource FlagInvalidversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName