-- | An interface for container backends such as libvirt-lxc or docker module B9.Container ( Backend (..), ) where import B9.B9Error import B9.B9Logging import B9.BuildInfo import B9.DiskImages import B9.ExecEnv import B9.ShellScript import Control.Eff -- | Class of backends that run a 'Script' in an 'ExecEnv' in an OS-level -- container like docker or lxc. class Backend config where -- | Return 'Nothing' if the configuration **disables** this container backend, -- and return 'Just ...' if the configuration **enables** this container backend. getBackendConfig :: forall proxy e. (Member BuildInfoReader e, CommandIO e) => proxy config -> Eff e (Maybe config) -- | The input images, that a given container accepts supportedImageTypes :: proxy config -> [ImageType] supportedImageTypes _ = [Raw] -- | Run a 'Script' in an 'ExecEnv', and return 'True' if the script -- completed successfully. runInEnvironment :: forall e. (Member BuildInfoReader e, CommandIO e, Member ExcB9 e) => config -> ExecEnv -> Script -> Eff e Bool