module Distribution.Types.ExeDependency
( ExeDependency(..)
, qualifiedExeName
) where
import Prelude ()
import Distribution.Compat.Prelude
import Distribution.Types.ComponentName
import Distribution.Types.UnqualComponentName
import Distribution.Types.PackageName
import Distribution.Version ( VersionRange, anyVersion )
import qualified Distribution.Compat.ReadP as Parse
import Distribution.Compat.ReadP
import Distribution.Text
import Text.PrettyPrint ((<+>), text)
data ExeDependency = ExeDependency
PackageName
UnqualComponentName
VersionRange
deriving (Generic, Read, Show, Eq, Typeable, Data)
instance Binary ExeDependency
instance NFData ExeDependency where rnf = genericRnf
instance Text ExeDependency where
disp (ExeDependency name exe ver) =
(disp name <<>> text ":" <<>> disp exe) <+> disp ver
parse = do name <- parse
_ <- Parse.char ':'
exe <- parse
Parse.skipSpaces
ver <- parse <++ return anyVersion
Parse.skipSpaces
return (ExeDependency name exe ver)
qualifiedExeName :: ExeDependency -> ComponentName
qualifiedExeName (ExeDependency _ ucn _) = CExeName ucn