-- 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