hackport-0.7.3.0: src/Status/Types.hs
module Status.Types
( FileStatus(..)
, StatusDirection(..)
, fromStatus
) where
import qualified Distribution.Simple.Utils as Cabal (comparing)
data StatusDirection
= PortagePlusOverlay
| OverlayToPortage
| HackageToOverlay
deriving Eq
data FileStatus a
= Same a
| Differs a a
| OverlayOnly a
| PortageOnly a
| HackageOnly a
deriving (Show,Eq)
instance Ord a => Ord (FileStatus a) where
compare = Cabal.comparing fromStatus
instance Functor FileStatus where
fmap f st =
case st of
Same a -> Same (f a)
Differs a b -> Differs (f a) (f b)
OverlayOnly a -> OverlayOnly (f a)
PortageOnly a -> PortageOnly (f a)
HackageOnly a -> HackageOnly (f a)
fromStatus :: FileStatus a -> a
fromStatus fs =
case fs of
Same a -> a
Differs a _ -> a -- second status is lost
OverlayOnly a -> a
PortageOnly a -> a
HackageOnly a -> a