bdcs-0.1.0: src/BDCS/ReqType.hs
{-# LANGUAGE TemplateHaskell #-}
-- |
-- Module: BDCS.ReqType
-- Copyright: (c) 2016-2017 Red Hat, Inc.
-- License: LGPL
--
-- Maintainer: https://github.com/weldr
-- Stability: alpha
-- Portability: portable
--
-- Data types for working with 'Requirements'.
module BDCS.ReqType(ReqContext(..),
ReqLanguage(..),
ReqStrength(..))
where
import Database.Persist.TH
{-# ANN module "HLint: ignore Use module export list" #-}
-- | The type of a requirements language - this basically maps to a packaging
-- system. For now, only RPM is supported.
data ReqLanguage = RPM
deriving(Eq, Read, Show)
-- | The type for specifying when a requirement should be enforced.
data ReqContext = Build -- ^ Applies when building
| Runtime -- ^ Applies when the package is on the system
| Test -- ^ Applies to running tests
| ScriptPre -- ^ Before a package install
| ScriptPost -- ^ After a package install
| ScriptPreUn -- ^ Before a package uninstall
| ScriptPostUn -- ^ After a package uninstall
| ScriptPreTrans -- ^ Before a package transaction
| ScriptPostTrans -- ^ After a package transaction
| ScriptVerify -- ^ Package verification script
| Feature -- ^ Feature requirement, e.g. rpmlib features
deriving(Eq, Read, Show)
-- | The type for specifying how strictly a requirement should be enforced.
data ReqStrength = Must -- ^ A requirement must be satisfied
| Should -- ^ A requirement should be satisfied, but it is
-- not an error if it cannot be.
| May -- ^ A requirement should only be satisfied at the
-- user's option. Typically, automated processes
-- will ignore this.
| ShouldIfInstalled -- ^ Like 'Should', but looks at packages that are
-- already installed.
| MayIfInstalled -- ^ Like 'May', but looks at packages that are
-- already installed.
deriving(Eq, Read, Show)
derivePersistField "ReqLanguage"
derivePersistField "ReqContext"
derivePersistField "ReqStrength"