-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | A Haskell DSL for generating Dockerfiles
--   
--   A Haskell DSL for generating Dockerfiles
@package dockerfile
@version 0.2.0


-- | A Simple DSL for describing and generating Dockerfiles in Haskell
--   
--   Compatible w/ Docker v18.03
--   
--   <pre>
--   main :: IO ()
--   main = putStrLn $
--     dockerfile $ do
--         from "debian:stable"
--         maintainer "creichert <a>creichert07@gmail.com</a>"
--         run "apt-get -y update"
--         run "apt-get -y upgrade"
--         cmd [ "echo", "hello world"]
--   </pre>
module Data.Docker

-- | A <a>Docker</a> writer monad for creating <tt>Dockerfile</tt>s
type Docker a = Writer DockerFile a
data CopyOpt
CopyOptFrom :: String -> CopyOpt
CopyOptChown :: [String] -> CopyOpt

-- | Render a list of <a>Docker</a> instructions to a <a>String</a>.
dockerfile :: Docker a -> String

-- | Render a list of <a>Docker</a> instructions to a <a>FilePath</a>.
dockerfileWrite :: FilePath -> Docker a -> IO ()
from :: String -> Docker ()
fromas :: String -> As -> Docker ()
run :: Script -> Docker ()
cmd :: [ScriptFile] -> Docker ()
label :: [(String, String)] -> Docker ()
maintainer :: String -> Docker ()
expose :: Int -> Docker ()
env :: String -> String -> Docker ()
add :: [FilePath] -> FilePath -> Docker ()
addchown :: [String] -> [FilePath] -> FilePath -> Docker ()
copy :: [FilePath] -> FilePath -> Docker ()
copyfrom :: String -> [FilePath] -> FilePath -> Docker ()
copychown :: [String] -> [FilePath] -> FilePath -> Docker ()
entrypoint :: FilePath -> [Param] -> Docker ()
volume :: [FilePath] -> Docker ()
user :: String -> Docker ()
workdir :: FilePath -> Docker ()
arg :: String -> Maybe String -> Docker ()
onbuild :: Instruction -> Docker ()
stopsignal :: String -> Docker ()
healthcheck :: Maybe ([String], String) -> Docker ()
shell :: String -> Docker ()
instance GHC.Show.Show Data.Docker.Instruction
instance GHC.Show.Show Data.Docker.AddOpt
instance GHC.Show.Show Data.Docker.CopyOpt
instance Data.Docker.DockerOpt Data.Docker.AddOpt
instance Data.Docker.DockerOpt Data.Docker.CopyOpt
