-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Dockerfile parser, pretty-printer and embedded DSL -- -- All functions for parsing, printing and writting Dockerfiles are -- exported through Language.Docker. For more fine-grained -- operations look for specific modules that implement a certain -- functionality. See the GitHub project for the source-code and -- examples. @package language-docker @version 5.0.0 module Language.Docker.Lexer reserved :: String -> Parser () natural :: Parser Integer commaSep :: Parser a -> Parser [a] stringLiteral :: Parser String brackets :: Parser a -> Parser a whiteSpace :: Parser () space :: Parser () spaces1 :: Parser () spaces :: Parser () symbol :: String -> Parser String caseInsensitiveChar :: Char -> Parser Char caseInsensitiveString :: String -> Parser String charsWithEscapedSpaces :: String -> Parser String lexeme :: Parser a -> Parser a module Language.Docker.Normalize -- | 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. normalizeEscapedLines :: String -> String module Language.Docker.Syntax data Image Image :: Maybe Registry -> String -> Image [$sel:registryName:Image] :: Image -> Maybe Registry [$sel:imageName:Image] :: Image -> String newtype Registry Registry :: String -> Registry type Tag = String data Protocol TCP :: Protocol UDP :: Protocol data Port Port :: Integer -> Protocol -> Port PortStr :: String -> Port PortRange :: Integer -> Integer -> Protocol -> Port newtype Ports Ports :: [Port] -> Ports [$sel:unPorts:Ports] :: Ports -> [Port] type Directory = String newtype ImageAlias ImageAlias :: String -> ImageAlias [$sel:unImageAlias:ImageAlias] :: ImageAlias -> String data BaseImage UntaggedImage :: Image -> (Maybe ImageAlias) -> BaseImage TaggedImage :: Image -> Tag -> (Maybe ImageAlias) -> BaseImage DigestedImage :: Image -> ByteString -> (Maybe ImageAlias) -> BaseImage -- | Type of the Dockerfile AST type Dockerfile = [InstructionPos] newtype SourcePath SourcePath :: String -> SourcePath [$sel:unSourcePath:SourcePath] :: SourcePath -> String newtype TargetPath TargetPath :: String -> TargetPath [$sel:unTargetPath:TargetPath] :: TargetPath -> String data Chown Chown :: String -> Chown NoChown :: Chown data CopySource CopySource :: String -> CopySource NoSource :: CopySource newtype Duration Duration :: DiffTime -> Duration [$sel:durationTime:Duration] :: Duration -> DiffTime newtype Retries Retries :: Int -> Retries [$sel:times:Retries] :: Retries -> Int data CopyArgs CopyArgs :: NonEmpty SourcePath -> TargetPath -> Chown -> CopySource -> CopyArgs [$sel:sourcePaths:CopyArgs] :: CopyArgs -> NonEmpty SourcePath [$sel:targetPath:CopyArgs] :: CopyArgs -> TargetPath [$sel:chownFlag:CopyArgs] :: CopyArgs -> Chown [$sel:sourceFlag:CopyArgs] :: CopyArgs -> CopySource data AddArgs AddArgs :: NonEmpty SourcePath -> TargetPath -> Chown -> AddArgs [$sel:sourcePaths:AddArgs] :: AddArgs -> NonEmpty SourcePath [$sel:targetPath:AddArgs] :: AddArgs -> TargetPath [$sel:chownFlag:AddArgs] :: AddArgs -> Chown data Check Check :: CheckArgs -> Check NoCheck :: Check newtype Arguments Arguments :: [String] -> Arguments data CheckArgs CheckArgs :: Arguments -> Maybe Duration -> Maybe Duration -> Maybe Duration -> Maybe Retries -> CheckArgs [$sel:checkCommand:CheckArgs] :: CheckArgs -> Arguments [$sel:interval:CheckArgs] :: CheckArgs -> Maybe Duration [$sel:timeout:CheckArgs] :: CheckArgs -> Maybe Duration [$sel:startPeriod:CheckArgs] :: CheckArgs -> Maybe Duration [$sel:retries:CheckArgs] :: CheckArgs -> Maybe Retries type Pairs = [(String, String)] -- | All commands available in Dockerfiles data Instruction From :: BaseImage -> Instruction Add :: AddArgs -> Instruction User :: String -> Instruction Label :: Pairs -> Instruction Stopsignal :: String -> Instruction Copy :: CopyArgs -> Instruction Run :: Arguments -> Instruction Cmd :: Arguments -> Instruction Shell :: Arguments -> Instruction Workdir :: Directory -> Instruction Expose :: Ports -> Instruction Volume :: String -> Instruction Entrypoint :: Arguments -> Instruction Maintainer :: String -> Instruction Env :: Pairs -> Instruction Arg :: String -> (Maybe String) -> Instruction Healthcheck :: Check -> Instruction Comment :: String -> Instruction OnBuild :: Instruction -> Instruction type Filename = String type Linenumber = Int -- | Instruction with additional location information required for -- creating good check messages data InstructionPos InstructionPos :: Instruction -> Filename -> Linenumber -> InstructionPos [$sel:instruction:InstructionPos] :: InstructionPos -> Instruction [$sel:sourcename:InstructionPos] :: InstructionPos -> Filename [$sel:lineNumber:InstructionPos] :: InstructionPos -> Linenumber instance GHC.Show.Show Language.Docker.Syntax.InstructionPos instance GHC.Classes.Ord Language.Docker.Syntax.InstructionPos instance GHC.Classes.Eq Language.Docker.Syntax.InstructionPos instance GHC.Show.Show Language.Docker.Syntax.Instruction instance GHC.Classes.Ord Language.Docker.Syntax.Instruction instance GHC.Classes.Eq Language.Docker.Syntax.Instruction instance GHC.Classes.Ord Language.Docker.Syntax.Check instance GHC.Classes.Eq Language.Docker.Syntax.Check instance GHC.Show.Show Language.Docker.Syntax.Check instance GHC.Classes.Ord Language.Docker.Syntax.CheckArgs instance GHC.Classes.Eq Language.Docker.Syntax.CheckArgs instance GHC.Show.Show Language.Docker.Syntax.CheckArgs instance GHC.Classes.Ord Language.Docker.Syntax.Arguments instance GHC.Classes.Eq Language.Docker.Syntax.Arguments instance GHC.Show.Show Language.Docker.Syntax.Arguments instance GHC.Classes.Ord Language.Docker.Syntax.AddArgs instance GHC.Classes.Eq Language.Docker.Syntax.AddArgs instance GHC.Show.Show Language.Docker.Syntax.AddArgs instance GHC.Classes.Ord Language.Docker.Syntax.CopyArgs instance GHC.Classes.Eq Language.Docker.Syntax.CopyArgs instance GHC.Show.Show Language.Docker.Syntax.CopyArgs instance GHC.Num.Num Language.Docker.Syntax.Retries instance GHC.Classes.Ord Language.Docker.Syntax.Retries instance GHC.Classes.Eq Language.Docker.Syntax.Retries instance GHC.Show.Show Language.Docker.Syntax.Retries instance GHC.Num.Num Language.Docker.Syntax.Duration instance GHC.Classes.Ord Language.Docker.Syntax.Duration instance GHC.Classes.Eq Language.Docker.Syntax.Duration instance GHC.Show.Show Language.Docker.Syntax.Duration instance GHC.Classes.Ord Language.Docker.Syntax.CopySource instance GHC.Classes.Eq Language.Docker.Syntax.CopySource instance GHC.Show.Show Language.Docker.Syntax.CopySource instance GHC.Classes.Ord Language.Docker.Syntax.Chown instance GHC.Classes.Eq Language.Docker.Syntax.Chown instance GHC.Show.Show Language.Docker.Syntax.Chown instance Data.String.IsString Language.Docker.Syntax.TargetPath instance GHC.Classes.Ord Language.Docker.Syntax.TargetPath instance GHC.Classes.Eq Language.Docker.Syntax.TargetPath instance GHC.Show.Show Language.Docker.Syntax.TargetPath instance Data.String.IsString Language.Docker.Syntax.SourcePath instance GHC.Classes.Ord Language.Docker.Syntax.SourcePath instance GHC.Classes.Eq Language.Docker.Syntax.SourcePath instance GHC.Show.Show Language.Docker.Syntax.SourcePath instance GHC.Show.Show Language.Docker.Syntax.BaseImage instance GHC.Classes.Ord Language.Docker.Syntax.BaseImage instance GHC.Classes.Eq Language.Docker.Syntax.BaseImage instance Data.String.IsString Language.Docker.Syntax.ImageAlias instance GHC.Classes.Ord Language.Docker.Syntax.ImageAlias instance GHC.Classes.Eq Language.Docker.Syntax.ImageAlias instance GHC.Show.Show Language.Docker.Syntax.ImageAlias instance GHC.Classes.Ord Language.Docker.Syntax.Ports instance GHC.Classes.Eq Language.Docker.Syntax.Ports instance GHC.Show.Show Language.Docker.Syntax.Ports instance GHC.Classes.Ord Language.Docker.Syntax.Port instance GHC.Classes.Eq Language.Docker.Syntax.Port instance GHC.Show.Show Language.Docker.Syntax.Port instance GHC.Classes.Ord Language.Docker.Syntax.Protocol instance GHC.Classes.Eq Language.Docker.Syntax.Protocol instance GHC.Show.Show Language.Docker.Syntax.Protocol instance GHC.Classes.Ord Language.Docker.Syntax.Image instance GHC.Classes.Eq Language.Docker.Syntax.Image instance GHC.Show.Show Language.Docker.Syntax.Image instance Data.String.IsString Language.Docker.Syntax.Registry instance GHC.Classes.Ord Language.Docker.Syntax.Registry instance GHC.Classes.Eq Language.Docker.Syntax.Registry instance GHC.Show.Show Language.Docker.Syntax.Registry instance Data.String.IsString Language.Docker.Syntax.Arguments instance GHC.Exts.IsList Language.Docker.Syntax.Arguments instance Data.String.IsString Language.Docker.Syntax.CopySource instance Data.String.IsString Language.Docker.Syntax.Chown instance GHC.Exts.IsList Language.Docker.Syntax.Ports instance Data.String.IsString Language.Docker.Syntax.Image module Language.Docker.PrettyPrint -- | Pretty print a Dockerfile to a String prettyPrint :: Dockerfile -> String -- | Pretty print a InstructionPos to a String prettyPrintInstructionPos :: InstructionPos -> String prettyPrintImage :: Image -> Doc prettyPrintBaseImage :: BaseImage -> Doc prettyPrintPairs :: Pairs -> Doc prettyPrintPair :: (String, String) -> Doc prettyPrintArguments :: Arguments -> Doc prettyPrintJSON :: Arguments -> Doc prettyPrintPort :: Port -> Doc prettyPrintFileList :: NonEmpty SourcePath -> TargetPath -> Doc prettyPrintChown :: Chown -> Doc prettyPrintCopySource :: CopySource -> Doc prettyPrintDuration :: String -> Maybe Duration -> Doc prettyPrintRetries :: Maybe Retries -> Doc prettyPrintInstruction :: Instruction -> Doc module Language.Docker.Parser data CopyFlag FlagChown :: Chown -> CopyFlag FlagSource :: CopySource -> CopyFlag FlagInvalid :: (String, String) -> CopyFlag data CheckFlag FlagInterval :: Duration -> CheckFlag FlagTimeout :: Duration -> CheckFlag FlagStartPeriod :: Duration -> CheckFlag FlagRetries :: Retries -> CheckFlag CFlagInvalid :: (String, String) -> CheckFlag comment :: Parser Instruction registry :: Parser Registry taggedImage :: Parser BaseImage digestedImage :: Parser BaseImage untaggedImage :: Parser BaseImage maybeImageAlias :: Parser (Maybe ImageAlias) imageAlias :: Parser ImageAlias baseImage :: Parser BaseImage from :: Parser Instruction cmd :: Parser Instruction copy :: Parser Instruction copyFlag :: Parser CopyFlag chown :: Parser Chown copySource :: Parser CopySource anyFlag :: Parser (String, String) fileList :: String -> (NonEmpty SourcePath -> TargetPath -> Instruction) -> Parser Instruction unexpectedFlag :: String -> String -> Parser a shell :: Parser Instruction stopsignal :: Parser Instruction doubleQuotedValue :: Parser String singleQuotedValue :: Parser String unquotedString :: String -> Parser String singleValue :: String -> Parser String pair :: Parser (String, String) pairsList :: Parser Pairs label :: Parser Instruction arg :: Parser Instruction env :: Parser Instruction pairs :: Parser Pairs singlePair :: Parser Pairs user :: Parser Instruction add :: Parser Instruction expose :: Parser Instruction port :: Parser Port ports :: Parser Ports portRange :: Parser Port protocol :: Parser Protocol portInt :: Parser Port portWithProtocol :: Parser Port portVariable :: Parser Port run :: Parser Instruction untilEol :: Parser String untilOccurrence :: String -> Parser String workdir :: Parser Instruction volume :: Parser Instruction maintainer :: Parser Instruction argumentsExec :: Parser Arguments argumentsShell :: Parser Arguments arguments :: Parser Arguments entrypoint :: Parser Instruction onbuild :: Parser Instruction healthcheck :: Parser Instruction checkFlag :: Parser CheckFlag durationFlag :: String -> Parser Duration retriesFlag :: Parser Retries parseInstruction :: Parser Instruction contents :: Parser a -> Parser a eol :: Parser () dockerfile :: Parser Dockerfile parseString :: String -> Either ParseError Dockerfile parseFile :: String -> IO (Either ParseError Dockerfile) module Language.Docker.EDSL.Types data EBaseImage EUntaggedImage :: Image -> (Maybe ImageAlias) -> EBaseImage ETaggedImage :: Image -> String -> (Maybe ImageAlias) -> EBaseImage EDigestedImage :: Image -> ByteString -> (Maybe ImageAlias) -> EBaseImage data EInstruction next From :: EBaseImage -> next -> EInstruction next AddArgs :: (NonEmpty SourcePath) -> TargetPath -> Chown -> next -> EInstruction next User :: String -> next -> EInstruction next Label :: Pairs -> next -> EInstruction next StopSignal :: String -> next -> EInstruction next CopyArgs :: (NonEmpty SourcePath) -> TargetPath -> Chown -> CopySource -> next -> EInstruction next RunArgs :: Arguments -> next -> EInstruction next CmdArgs :: Arguments -> next -> EInstruction next Shell :: Arguments -> next -> EInstruction next Workdir :: Directory -> next -> EInstruction next Expose :: Ports -> next -> EInstruction next Volume :: String -> next -> EInstruction next EntrypointArgs :: Arguments -> next -> EInstruction next Maintainer :: String -> next -> EInstruction next Env :: Pairs -> next -> EInstruction next Arg :: String -> (Maybe String) -> next -> EInstruction next Comment :: String -> next -> EInstruction next Healthcheck :: Check -> next -> EInstruction next OnBuildRaw :: Instruction -> next -> EInstruction next Embed :: [InstructionPos] -> next -> EInstruction next instance GHC.Base.Functor Language.Docker.EDSL.Types.EInstruction instance GHC.Classes.Ord Language.Docker.EDSL.Types.EBaseImage instance GHC.Classes.Eq Language.Docker.EDSL.Types.EBaseImage instance GHC.Show.Show Language.Docker.EDSL.Types.EBaseImage instance Data.String.IsString Language.Docker.EDSL.Types.EBaseImage module Language.Docker.EDSL -- | The type of Identity based EDSL blocks type EDockerfileM = Free EInstruction -- | The type of free monad EDSL blocks type EDockerfileTM = FreeT EInstruction type EInstructionM = Free EInstruction type EInstructionTM = FreeT EInstruction embed :: forall m_aDBT. MonadFree EInstruction m_aDBT => [InstructionPos] -> m_aDBT () onBuildRaw :: forall m_aDBQ. MonadFree EInstruction m_aDBQ => Instruction -> m_aDBQ () healthcheck :: forall m_aDBN. MonadFree EInstruction m_aDBN => Check -> m_aDBN () comment :: forall m_aDBK. MonadFree EInstruction m_aDBK => String -> m_aDBK () arg :: forall m_aDBG. MonadFree EInstruction m_aDBG => String -> Maybe String -> m_aDBG () env :: forall m_aDBD. MonadFree EInstruction m_aDBD => Pairs -> m_aDBD () maintainer :: forall m_aDBA. MonadFree EInstruction m_aDBA => String -> m_aDBA () entrypointArgs :: forall m_aDBx. MonadFree EInstruction m_aDBx => Arguments -> m_aDBx () volume :: forall m_aDBu. MonadFree EInstruction m_aDBu => String -> m_aDBu () expose :: forall m_aDBr. MonadFree EInstruction m_aDBr => Ports -> m_aDBr () workdir :: forall m_aDBo. MonadFree EInstruction m_aDBo => Directory -> m_aDBo () shell :: forall m_aDBl. MonadFree EInstruction m_aDBl => Arguments -> m_aDBl () cmdArgs :: forall m_aDBi. MonadFree EInstruction m_aDBi => Arguments -> m_aDBi () runArgs :: forall m_aDBf. MonadFree EInstruction m_aDBf => Arguments -> m_aDBf () copyArgs :: forall m_aDB9. MonadFree EInstruction m_aDB9 => NonEmpty SourcePath -> TargetPath -> Chown -> CopySource -> m_aDB9 () stopSignal :: forall m_aDB6. MonadFree EInstruction m_aDB6 => String -> m_aDB6 () label :: forall m_aDB3. MonadFree EInstruction m_aDB3 => Pairs -> m_aDB3 () user :: forall m_aDB0. MonadFree EInstruction m_aDB0 => String -> m_aDB0 () addArgs :: forall m_aDAV. MonadFree EInstruction m_aDAV => NonEmpty SourcePath -> TargetPath -> Chown -> m_aDAV () from :: forall m_aDAg. MonadFree EInstruction m_aDAg => EBaseImage -> m_aDAg () runDockerWriter :: (MonadWriter [Instruction] m) => EDockerfileM a -> m a runDockerWriterIO :: (Monad m, MonadTrans t, Monad (t m), MonadWriter [Instruction] (t m), MonadIO (t m)) => EDockerfileTM m a -> t m a runDef :: MonadWriter [t] m => (t1 -> t) -> t1 -> m b -> m b runDef2 :: MonadWriter [t] m => (t1 -> t2 -> t) -> t1 -> t2 -> m b -> m b runD :: MonadWriter [Instruction] m => EInstruction (m b) -> m b instructionPos :: Instruction -> InstructionPos -- | Runs the Dockerfile EDSL and returns a Dockerfile you can -- pretty print or manipulate toDockerfile :: EDockerfileM a -> Dockerfile -- | runs the Dockerfile EDSL and returns a String using -- PrettyPrint -- --
--   import Language.Docker
--   
--   main :: IO ()
--   main = writeFile "something.dockerfile" $ toDockerfileStr $ do
--       from (tagged "fpco/stack-build" "lts-6.9")
--       add ["."] "applanguage-docker"
--       workdir "applanguage-docker"
--       run "stack build --test --only-dependencies"
--       cmd "stack test"
--   
toDockerfileStr :: EDockerfileM a -> String -- | Use a docker image in a FROM instruction without a tag -- -- The following two examples are equivalent -- --
--   from $ untagged "fpco/stack-build"
--   
-- -- Is equivalent to, when having OverloadedStrings: -- --
--   from "fpco/stack-build"
--   
untagged :: String -> EBaseImage -- | Use a specific tag for a docker image. This function is meant to be -- used as an infix operator. -- --
--   from $ "fpco/stack-build" tagged "lts-10.3"
--   
tagged :: Image -> String -> EBaseImage digested :: Image -> ByteString -> EBaseImage -- | Alias 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" aliased "builder"
--   
aliased :: EBaseImage -> String -> EBaseImage -- | Create a RUN instruction with the given arguments. -- --
--   run "apt-get install wget"
--   
run :: MonadFree EInstruction m => Arguments -> m () -- | Create an ENTRYPOINT instruction with the given arguments. -- --
--   entrypoint "usrlocalbinprogram --some-flag"
--   
entrypoint :: MonadFree EInstruction m => Arguments -> m () -- | Create a CMD instruction with the given arguments. -- --
--   cmd "my-program --some-flag"
--   
cmd :: MonadFree EInstruction m => Arguments -> m () -- | Create a COPY instruction. This function is meant to be used with the -- compinators to, fromStage and ownedBy -- --
--   copy $ ["foo.js", "bar.js"] to "."
--   copy $ ["some_file"] to "somepath" fromStage "builder"
--   
copy :: MonadFree EInstruction m => CopyArgs -> m () -- | Create a COPY instruction from a given build stage. This is a -- shorthand version of using copy with combinators. -- --
--   copyFromStage "builder" ["foo.js", "bar.js"] "."
--   
copyFromStage :: MonadFree EInstruction m => CopySource -> NonEmpty SourcePath -> TargetPath -> m () -- | 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 copy -- instead. -- --
--   add ["foo.js", "bar.js"] "."
--   
add :: MonadFree EInstruction m => NonEmpty SourcePath -> TargetPath -> m () -- | Converts a NonEmpty list of strings to a NonEmpty list of -- SourcePath -- -- This is a convenience function when you need to pass a non-static list -- of strings that you build somewhere as an argument for copy or -- add -- --
--   someFiles <- glob "*.js"
--   copy $ (toSources someFiles) to "."
--   
toSources :: NonEmpty String -> NonEmpty SourcePath -- | Converts a String into a TargetPath -- -- This is a convenience function when you need to pass a string variable -- as an argument for copy or add -- --
--   let destination = buildSomePath pwd
--   add ["foo.js"] (toTarget destination)
--   
toTarget :: String -> TargetPath -- | Adds the --from= option to a COPY instruction. -- -- This function is meant to be used as an infix operator: -- --
--   copy $ ["foo.js"] to "." fromStage "builder"
--   
fromStage :: CopyArgs -> CopySource -> CopyArgs -- | Adds the --chown= option to a COPY instruction. -- -- This function is meant to be used as an infix operator: -- --
--   copy $ ["foo.js"] to "." ownedBy "www-data:www-data"
--   
ownedBy :: CopyArgs -> Chown -> CopyArgs -- | Usedto join source paths with atarget path as an arguments for -- copy -- -- This function is meant to be used as an infix operator: -- --
--   copy $ ["foo.js"] to "." ownedBy
--   
to :: NonEmpty SourcePath -> TargetPath -> CopyArgs ports :: [Port] -> Ports tcpPort :: Integer -> Port udpPort :: Integer -> Port variablePort :: String -> Port portRange :: Integer -> Integer -> Port udpPortRange :: Integer -> Integer -> Port check :: Arguments -> Check interval :: Check -> Integer -> Check timeout :: Check -> Integer -> Check startPeriod :: Check -> Integer -> Check retries :: Check -> Integer -> Check noCheck :: Check -- | ONBUILD Dockerfile instruction -- -- Each nested instruction gets emitted as a separate ONBUILD -- block -- --
--   toDockerfile $ do
--       from "node"
--       run "apt-get update"
--       onBuild $ do
--           run "echo more-stuff"
--           run "echo here"
--   
onBuild :: MonadFree EInstruction m => EDockerfileM a -> m () -- | A version of toDockerfile which allows IO actions toDockerfileIO :: MonadIO m => EDockerfileTM m t -> m Dockerfile -- | A version of toDockerfileStr which allows IO actions toDockerfileStrIO :: MonadIO m => EDockerfileTM m t -> m String -- | Just runs the EDSL's writer monad runDockerfileIO :: MonadIO m => EDockerfileTM m t -> m (t, Dockerfile) -- | Runs the EDSL's writer monad and pretty-prints the result runDockerfileStrIO :: MonadIO m => EDockerfileTM m t -> m (t, String) module Language.Docker.Syntax.Lift instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Check instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.CheckArgs instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Retries instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Duration instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.AddArgs instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.CopyArgs instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.CopySource instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Chown instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.TargetPath instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.SourcePath instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.InstructionPos instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Instruction instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Arguments instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.BaseImage instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.ImageAlias instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Image instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Registry instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Ports instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Port instance Language.Haskell.TH.Syntax.Lift Language.Docker.Syntax.Protocol instance Language.Haskell.TH.Syntax.Lift Data.Time.Clock.Internal.DiffTime.DiffTime instance Language.Haskell.TH.Syntax.Lift (Data.Fixed.Fixed a) instance Language.Haskell.TH.Syntax.Lift a => Language.Haskell.TH.Syntax.Lift (Data.List.NonEmpty.NonEmpty a) instance Language.Haskell.TH.Syntax.Lift Data.ByteString.Internal.ByteString module Language.Docker.EDSL.Quasi -- | Quasiquoter for embedding dockerfiles on the EDSL -- --
--   putStr $ toDockerfile $ do
--       from "node"
--       run "apt-get update"
--       [edockerfile|
--       RUN apt-get update
--       CMD node something.js
--       |]
--   
edockerfile :: QuasiQuoter edockerfileE :: String -> ExpQ dockerfile :: QuasiQuoter dockerfileE :: String -> ExpQ module Language.Docker -- | Type of the Dockerfile AST type Dockerfile = [InstructionPos] parseString :: String -> Either ParseError Dockerfile parseFile :: String -> IO (Either ParseError Dockerfile) -- | Pretty print a Dockerfile to a String prettyPrint :: Dockerfile -> String -- | Pretty print a InstructionPos to a String prettyPrintInstructionPos :: InstructionPos -> String -- | runs the Dockerfile EDSL and returns a String using -- PrettyPrint -- --
--   import Language.Docker
--   
--   main :: IO ()
--   main = writeFile "something.dockerfile" $ toDockerfileStr $ do
--       from (tagged "fpco/stack-build" "lts-6.9")
--       add ["."] "applanguage-docker"
--       workdir "applanguage-docker"
--       run "stack build --test --only-dependencies"
--       cmd "stack test"
--   
toDockerfileStr :: EDockerfileM a -> String -- | Runs the Dockerfile EDSL and returns a Dockerfile you can -- pretty print or manipulate toDockerfile :: EDockerfileM a -> Dockerfile -- | A version of toDockerfileStr which allows IO actions toDockerfileStrIO :: MonadIO m => EDockerfileTM m t -> m String -- | A version of toDockerfile which allows IO actions toDockerfileIO :: MonadIO m => EDockerfileTM m t -> m Dockerfile -- | Just runs the EDSL's writer monad runDockerfileIO :: MonadIO m => EDockerfileTM m t -> m (t, Dockerfile) -- | Runs the EDSL's writer monad and pretty-prints the result runDockerfileStrIO :: MonadIO m => EDockerfileTM m t -> m (t, String) -- | Lift a computation from the IO monad. liftIO :: MonadIO m => forall a. () => IO a -> m a from :: forall m_aDAg. MonadFree EInstruction m_aDAg => EBaseImage -> m_aDAg () -- | Use a specific tag for a docker image. This function is meant to be -- used as an infix operator. -- --
--   from $ "fpco/stack-build" tagged "lts-10.3"
--   
tagged :: Image -> String -> EBaseImage -- | Use a docker image in a FROM instruction without a tag -- -- The following two examples are equivalent -- --
--   from $ untagged "fpco/stack-build"
--   
-- -- Is equivalent to, when having OverloadedStrings: -- --
--   from "fpco/stack-build"
--   
untagged :: String -> EBaseImage digested :: Image -> ByteString -> EBaseImage -- | Alias 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" aliased "builder"
--   
aliased :: EBaseImage -> String -> EBaseImage -- | 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 copy -- instead. -- --
--   add ["foo.js", "bar.js"] "."
--   
add :: MonadFree EInstruction m => NonEmpty SourcePath -> TargetPath -> m () user :: forall m_aDB0. MonadFree EInstruction m_aDB0 => String -> m_aDB0 () label :: forall m_aDB3. MonadFree EInstruction m_aDB3 => Pairs -> m_aDB3 () stopSignal :: forall m_aDB6. MonadFree EInstruction m_aDB6 => String -> m_aDB6 () -- | Create a COPY instruction. This function is meant to be used with the -- compinators to, fromStage and ownedBy -- --
--   copy $ ["foo.js", "bar.js"] to "."
--   copy $ ["some_file"] to "somepath" fromStage "builder"
--   
copy :: MonadFree EInstruction m => CopyArgs -> m () -- | Create a COPY instruction from a given build stage. This is a -- shorthand version of using copy with combinators. -- --
--   copyFromStage "builder" ["foo.js", "bar.js"] "."
--   
copyFromStage :: MonadFree EInstruction m => CopySource -> NonEmpty SourcePath -> TargetPath -> m () -- | Usedto join source paths with atarget path as an arguments for -- copy -- -- This function is meant to be used as an infix operator: -- --
--   copy $ ["foo.js"] to "." ownedBy
--   
to :: NonEmpty SourcePath -> TargetPath -> CopyArgs -- | Adds the --from= option to a COPY instruction. -- -- This function is meant to be used as an infix operator: -- --
--   copy $ ["foo.js"] to "." fromStage "builder"
--   
fromStage :: CopyArgs -> CopySource -> CopyArgs -- | Adds the --chown= option to a COPY instruction. -- -- This function is meant to be used as an infix operator: -- --
--   copy $ ["foo.js"] to "." ownedBy "www-data:www-data"
--   
ownedBy :: CopyArgs -> Chown -> CopyArgs -- | Converts a NonEmpty list of strings to a NonEmpty list of -- SourcePath -- -- This is a convenience function when you need to pass a non-static list -- of strings that you build somewhere as an argument for copy or -- add -- --
--   someFiles <- glob "*.js"
--   copy $ (toSources someFiles) to "."
--   
toSources :: NonEmpty String -> NonEmpty SourcePath -- | Converts a String into a TargetPath -- -- This is a convenience function when you need to pass a string variable -- as an argument for copy or add -- --
--   let destination = buildSomePath pwd
--   add ["foo.js"] (toTarget destination)
--   
toTarget :: String -> TargetPath -- | Create a RUN instruction with the given arguments. -- --
--   run "apt-get install wget"
--   
run :: MonadFree EInstruction m => Arguments -> m () runArgs :: forall m_aDBf. MonadFree EInstruction m_aDBf => Arguments -> m_aDBf () -- | Create a CMD instruction with the given arguments. -- --
--   cmd "my-program --some-flag"
--   
cmd :: MonadFree EInstruction m => Arguments -> m () cmdArgs :: forall m_aDBi. MonadFree EInstruction m_aDBi => Arguments -> m_aDBi () healthcheck :: forall m_aDBN. MonadFree EInstruction m_aDBN => Check -> m_aDBN () check :: Arguments -> Check interval :: Check -> Integer -> Check timeout :: Check -> Integer -> Check startPeriod :: Check -> Integer -> Check retries :: Check -> Integer -> Check workdir :: forall m_aDBo. MonadFree EInstruction m_aDBo => Directory -> m_aDBo () expose :: forall m_aDBr. MonadFree EInstruction m_aDBr => Ports -> m_aDBr () ports :: [Port] -> Ports tcpPort :: Integer -> Port udpPort :: Integer -> Port variablePort :: String -> Port portRange :: Integer -> Integer -> Port udpPortRange :: Integer -> Integer -> Port volume :: forall m_aDBu. MonadFree EInstruction m_aDBu => String -> m_aDBu () -- | Create an ENTRYPOINT instruction with the given arguments. -- --
--   entrypoint "usrlocalbinprogram --some-flag"
--   
entrypoint :: MonadFree EInstruction m => Arguments -> m () entrypointArgs :: forall m_aDBx. MonadFree EInstruction m_aDBx => Arguments -> m_aDBx () maintainer :: forall m_aDBA. MonadFree EInstruction m_aDBA => String -> m_aDBA () env :: forall m_aDBD. MonadFree EInstruction m_aDBD => Pairs -> m_aDBD () arg :: forall m_aDBG. MonadFree EInstruction m_aDBG => String -> Maybe String -> m_aDBG () comment :: forall m_aDBK. MonadFree EInstruction m_aDBK => String -> m_aDBK () -- | ONBUILD Dockerfile instruction -- -- Each nested instruction gets emitted as a separate ONBUILD -- block -- --
--   toDockerfile $ do
--       from "node"
--       run "apt-get update"
--       onBuild $ do
--           run "echo more-stuff"
--           run "echo here"
--   
onBuild :: MonadFree EInstruction m => EDockerfileM a -> m () onBuildRaw :: forall m_aDBQ. MonadFree EInstruction m_aDBQ => Instruction -> m_aDBQ () embed :: forall m_aDBT. MonadFree EInstruction m_aDBT => [InstructionPos] -> m_aDBT () -- | Quasiquoter for embedding dockerfiles on the EDSL -- --
--   putStr $ toDockerfile $ do
--       from "node"
--       run "apt-get update"
--       [edockerfile|
--       RUN apt-get update
--       CMD node something.js
--       |]
--   
edockerfile :: QuasiQuoter -- | The type of Identity based EDSL blocks type EDockerfileM = Free EInstruction -- | The type of free monad EDSL blocks type EDockerfileTM = FreeT EInstruction data EBaseImage EUntaggedImage :: Image -> (Maybe ImageAlias) -> EBaseImage ETaggedImage :: Image -> String -> (Maybe ImageAlias) -> EBaseImage EDigestedImage :: Image -> ByteString -> (Maybe ImageAlias) -> EBaseImage dockerfile :: QuasiQuoter -- | All commands available in Dockerfiles data Instruction From :: BaseImage -> Instruction Add :: AddArgs -> Instruction User :: String -> Instruction Label :: Pairs -> Instruction Stopsignal :: String -> Instruction Copy :: CopyArgs -> Instruction Run :: Arguments -> Instruction Cmd :: Arguments -> Instruction Shell :: Arguments -> Instruction Workdir :: Directory -> Instruction Expose :: Ports -> Instruction Volume :: String -> Instruction Entrypoint :: Arguments -> Instruction Maintainer :: String -> Instruction Env :: Pairs -> Instruction Arg :: String -> (Maybe String) -> Instruction Healthcheck :: Check -> Instruction Comment :: String -> Instruction OnBuild :: Instruction -> Instruction -- | Instruction with additional location information required for -- creating good check messages data InstructionPos InstructionPos :: Instruction -> Filename -> Linenumber -> InstructionPos [$sel:instruction:InstructionPos] :: InstructionPos -> Instruction [$sel:sourcename:InstructionPos] :: InstructionPos -> Filename [$sel:lineNumber:InstructionPos] :: InstructionPos -> Linenumber data BaseImage UntaggedImage :: Image -> (Maybe ImageAlias) -> BaseImage TaggedImage :: Image -> Tag -> (Maybe ImageAlias) -> BaseImage DigestedImage :: Image -> ByteString -> (Maybe ImageAlias) -> BaseImage newtype SourcePath SourcePath :: String -> SourcePath [$sel:unSourcePath:SourcePath] :: SourcePath -> String newtype TargetPath TargetPath :: String -> TargetPath [$sel:unTargetPath:TargetPath] :: TargetPath -> String data Chown Chown :: String -> Chown NoChown :: Chown data CopySource CopySource :: String -> CopySource NoSource :: CopySource data CopyArgs CopyArgs :: NonEmpty SourcePath -> TargetPath -> Chown -> CopySource -> CopyArgs [$sel:sourcePaths:CopyArgs] :: CopyArgs -> NonEmpty SourcePath [$sel:targetPath:CopyArgs] :: CopyArgs -> TargetPath [$sel:chownFlag:CopyArgs] :: CopyArgs -> Chown [$sel:sourceFlag:CopyArgs] :: CopyArgs -> CopySource data AddArgs AddArgs :: NonEmpty SourcePath -> TargetPath -> Chown -> AddArgs [$sel:sourcePaths:AddArgs] :: AddArgs -> NonEmpty SourcePath [$sel:targetPath:AddArgs] :: AddArgs -> TargetPath [$sel:chownFlag:AddArgs] :: AddArgs -> Chown data Check Check :: CheckArgs -> Check NoCheck :: Check data CheckArgs CheckArgs :: Arguments -> Maybe Duration -> Maybe Duration -> Maybe Duration -> Maybe Retries -> CheckArgs [$sel:checkCommand:CheckArgs] :: CheckArgs -> Arguments [$sel:interval:CheckArgs] :: CheckArgs -> Maybe Duration [$sel:timeout:CheckArgs] :: CheckArgs -> Maybe Duration [$sel:startPeriod:CheckArgs] :: CheckArgs -> Maybe Duration [$sel:retries:CheckArgs] :: CheckArgs -> Maybe Retries data Image Image :: Maybe Registry -> String -> Image [$sel:registryName:Image] :: Image -> Maybe Registry [$sel:imageName:Image] :: Image -> String newtype Registry Registry :: String -> Registry newtype ImageAlias ImageAlias :: String -> ImageAlias [$sel:unImageAlias:ImageAlias] :: ImageAlias -> String type Tag = String data Ports type Directory = String data Arguments type Pairs = [(String, String)] type Filename = String type Linenumber = Int -- | The abstract data type ParseError represents parse errors. It -- provides the source position (SourcePos) of the error and a -- list of error messages (Message). A ParseError can be -- returned by the function parse. ParseError is an -- instance of the Show and Eq classes. data ParseError :: * instructionPos :: Instruction -> InstructionPos