{-# LANGUAGE NoImplicitPrelude #-}

module Stack.Types.DockerEntrypoint
  ( DockerEntrypoint (..)
  , DockerUser (..)
  ) where

import           Stack.Prelude
import           System.PosixCompat.Types ( FileMode, GroupID, UserID )

-- | Data passed into Docker container for the Docker entrypoint's use

newtype DockerEntrypoint = DockerEntrypoint
  { DockerEntrypoint -> Maybe DockerUser
deUser :: Maybe DockerUser
    -- ^ UID/GID/etc of host user, if we wish to perform UID/GID switch in

    -- container

  }
  deriving (ReadPrec [DockerEntrypoint]
ReadPrec DockerEntrypoint
Int -> ReadS DockerEntrypoint
ReadS [DockerEntrypoint]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DockerEntrypoint]
$creadListPrec :: ReadPrec [DockerEntrypoint]
readPrec :: ReadPrec DockerEntrypoint
$creadPrec :: ReadPrec DockerEntrypoint
readList :: ReadS [DockerEntrypoint]
$creadList :: ReadS [DockerEntrypoint]
readsPrec :: Int -> ReadS DockerEntrypoint
$creadsPrec :: Int -> ReadS DockerEntrypoint
Read, Int -> DockerEntrypoint -> ShowS
[DockerEntrypoint] -> ShowS
DockerEntrypoint -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DockerEntrypoint] -> ShowS
$cshowList :: [DockerEntrypoint] -> ShowS
show :: DockerEntrypoint -> String
$cshow :: DockerEntrypoint -> String
showsPrec :: Int -> DockerEntrypoint -> ShowS
$cshowsPrec :: Int -> DockerEntrypoint -> ShowS
Show)

-- | Docker host user info

data DockerUser = DockerUser
  { DockerUser -> UserID
duUid :: UserID -- ^ uid

  , DockerUser -> GroupID
duGid :: GroupID -- ^ gid

  , DockerUser -> [GroupID]
duGroups :: [GroupID] -- ^ Supplemental groups

  , DockerUser -> FileMode
duUmask :: FileMode -- ^ File creation mask }

  }
  deriving (ReadPrec [DockerUser]
ReadPrec DockerUser
Int -> ReadS DockerUser
ReadS [DockerUser]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DockerUser]
$creadListPrec :: ReadPrec [DockerUser]
readPrec :: ReadPrec DockerUser
$creadPrec :: ReadPrec DockerUser
readList :: ReadS [DockerUser]
$creadList :: ReadS [DockerUser]
readsPrec :: Int -> ReadS DockerUser
$creadsPrec :: Int -> ReadS DockerUser
Read, Int -> DockerUser -> ShowS
[DockerUser] -> ShowS
DockerUser -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DockerUser] -> ShowS
$cshowList :: [DockerUser] -> ShowS
show :: DockerUser -> String
$cshow :: DockerUser -> String
showsPrec :: Int -> DockerUser -> ShowS
$cshowsPrec :: Int -> DockerUser -> ShowS
Show)