-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A bunch of system utilities used by other projects -- -- This package provides various system-level utilities, mostly related -- to building packages within docker @package system-extra @version 0.1.0 module System.ProcessControl type ProcessControl = (Maybe Handle, Maybe Handle, Maybe Handle, ProcessHandle) data TrackedProcess TrackedProcess :: String -> String -> String -> [String] -> TrackedProcess [name] :: TrackedProcess -> String [color] :: TrackedProcess -> String [execPath] :: TrackedProcess -> String [args] :: TrackedProcess -> [String] stack :: String process :: TrackedProcess -> IO ProcessControl data Tracker Tracker :: String -> ProcessHandle -> [ThreadId] -> Tracker [trackerName] :: Tracker -> String [trackedProcess] :: Tracker -> ProcessHandle [trackerThreads] :: Tracker -> [ThreadId] data Message Message :: String -> String -> String -> Message [origin] :: Message -> String [msgColor] :: Message -> String [msg] :: Message -> String trackProcess :: Chan Message -> TrackedProcess -> IO (Either IOException Tracker) trackProcesses :: [TrackedProcess] -> IO () instance GHC.Show.Show System.ProcessControl.TrackedProcess instance GHC.Show.Show System.ProcessControl.Tracker -- | Common utilities for networking, mostly types. module System.Network.Extra -- | Name of interface or IP address, maybe 0.0.0.0 to bind to all -- available interfaces type IPInterface = String allInterfaces :: IPInterface localhost :: IPInterface type Port = Int data IPProto UDP :: IPProto TCP :: IPProto data Endpoint Endpoint :: IPInterface -> Port -> Endpoint [ip] :: Endpoint -> IPInterface [port] :: Endpoint -> Port hostport :: Endpoint -> String instance GHC.Read.Read System.Network.Extra.Endpoint instance GHC.Show.Show System.Network.Extra.Endpoint instance GHC.Classes.Eq System.Network.Extra.Endpoint instance GHC.Show.Show System.Network.Extra.IPProto module System.IO.Extra -- | Copy data from one source handle to target handle -- -- Probably better implemented using PipesConduits... copy :: Handle -> Handle -> IO () -- | Provides types and utility functions to work with docker containers -- and images module System.Docker -- | A Docker image reference newtype ImageName ImageName :: String -> ImageName [imageName] :: ImageName -> String -- | A Docker container name newtype ContainerName ContainerName :: String -> ContainerName [containerName] :: ContainerName -> String dockerParams :: RunParam -> [String] data RunParam Port :: IPInterface -> Port -> Port -> IPProto -> RunParam [hostInterface] :: RunParam -> IPInterface [hostPort] :: RunParam -> Port [containerPort] :: RunParam -> Port [proto] :: RunParam -> IPProto Volume :: FilePath -> FilePath -> RunParam [hostPath] :: RunParam -> FilePath [containerPath] :: RunParam -> FilePath Link :: ContainerName -> ContainerName -> RunParam [linkedName] :: RunParam -> ContainerName [linkeeName] :: RunParam -> ContainerName Name :: ContainerName -> RunParam [contName] :: RunParam -> ContainerName Image :: ImageName -> RunParam [dockerImage] :: RunParam -> ImageName Restart :: RestartPolicy -> RunParam [restartPolicy] :: RunParam -> RestartPolicy LogConfig :: LogDriver -> [LogOption] -> RunParam [logDriver] :: RunParam -> LogDriver [logOptions] :: RunParam -> [LogOption] (:--) :: RunParam -> RunParam -> RunParam Detach :: RunParam NoParam :: RunParam -- | Available drivers -- -- see -- http://docs.docker.com/engine/reference/logging/overview/#the-json-file-options data LogDriver JsonFile :: LogDriver Syslog :: LogDriver Journald :: LogDriver Gelf :: LogDriver Fluentd :: LogDriver Awslogs :: LogDriver type LogOption = (String, String) data RestartPolicy NeverRestart :: RestartPolicy OnFailure :: Int -> RestartPolicy [maxRetries] :: RestartPolicy -> Int AlwaysRestart :: RestartPolicy ip :: IPInterface -> RunParam -> RunParam port :: Port -> RunParam udp :: RunParam -> RunParam volume :: FilePath -> FilePath -> RunParam link :: ContainerName -> ContainerName -> RunParam name :: String -> RunParam detach :: RunParam restart :: RestartPolicy -> RunParam logConfig :: LogDriver -> [LogOption] -> RunParam container :: [RunParam] -> RunParam instance GHC.Classes.Eq System.Docker.ContainerName instance GHC.Classes.Eq System.Docker.ImageName instance GHC.Show.Show System.Docker.ImageName instance GHC.Read.Read System.Docker.ImageName instance GHC.Show.Show System.Docker.ContainerName instance GHC.Read.Read System.Docker.ContainerName instance GHC.Base.Monoid System.Docker.RunParam instance GHC.Show.Show System.Docker.LogDriver instance GHC.Show.Show System.Docker.RestartPolicy -- | Provide high-level functions to build Haskell-project using some -- docker image module System.Build -- | Arguments passed to stack when building desired target data BuildArgs -- | A simply named target for stack, assumes component is unique in all -- current packages. See -- https://docs.haskellstack.org/en/stable/build_command/#target-syntax. SimpleTarget :: String -> BuildArgs -- | A fully named target for stack to build. Assumes component is an -- executable type. FullTarget :: String -> String -> BuildArgs -- | Pass arguments to GHC GHCOption :: String -> BuildArgs -- | Compose arguments MoreArgs :: BuildArgs -> BuildArgs -> BuildArgs -- | Neutral element for BuildArgs NoArgs :: BuildArgs asBinaryName :: BuildArgs -> String asStackArg :: BuildArgs -> [String] -- | Build a Haskell project using some docker image. -- -- In order to maximize reuse, this process creates in the current -- directory a file called `.cidfile` which contains the id of the latest -- container that ran the build. When this file exists, the next run will -- reuse the volumes of the previous run which means built dependencies -- will normally be available. -- -- The built target, which is assumed to be a binary executable, is then -- extracted from the container and copied locally in a file named after -- asBinaryName. -- -- TODO: run with current user in the container or reuse stack's docker -- capabilities stackInDocker :: ImageName -> FilePath -> BuildArgs -> IO FilePath instance GHC.Read.Read System.Build.BuildArgs instance GHC.Show.Show System.Build.BuildArgs instance GHC.Classes.Eq System.Build.BuildArgs instance GHC.Base.Monoid System.Build.BuildArgs instance Data.String.IsString System.Build.BuildArgs