{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveGeneric #-}
module Distribution.Parsec.Source
( PSource (..)
, CabalFileSource (..)
, InstalledPackageInfoSource (..)
, renderCabalFileSource
, renderInstalledPackageInfoSource
) where
import qualified Data.ByteString as BS
import Distribution.Compat.Prelude
import Prelude ()
data PSource src
= PKnownSource src
| PUnknownSource
deriving (Eq (PSource src)
Eq (PSource src) =>
(PSource src -> PSource src -> Ordering)
-> (PSource src -> PSource src -> Bool)
-> (PSource src -> PSource src -> Bool)
-> (PSource src -> PSource src -> Bool)
-> (PSource src -> PSource src -> Bool)
-> (PSource src -> PSource src -> PSource src)
-> (PSource src -> PSource src -> PSource src)
-> Ord (PSource src)
PSource src -> PSource src -> Bool
PSource src -> PSource src -> Ordering
PSource src -> PSource src -> PSource src
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall src. Ord src => Eq (PSource src)
forall src. Ord src => PSource src -> PSource src -> Bool
forall src. Ord src => PSource src -> PSource src -> Ordering
forall src. Ord src => PSource src -> PSource src -> PSource src
$ccompare :: forall src. Ord src => PSource src -> PSource src -> Ordering
compare :: PSource src -> PSource src -> Ordering
$c< :: forall src. Ord src => PSource src -> PSource src -> Bool
< :: PSource src -> PSource src -> Bool
$c<= :: forall src. Ord src => PSource src -> PSource src -> Bool
<= :: PSource src -> PSource src -> Bool
$c> :: forall src. Ord src => PSource src -> PSource src -> Bool
> :: PSource src -> PSource src -> Bool
$c>= :: forall src. Ord src => PSource src -> PSource src -> Bool
>= :: PSource src -> PSource src -> Bool
$cmax :: forall src. Ord src => PSource src -> PSource src -> PSource src
max :: PSource src -> PSource src -> PSource src
$cmin :: forall src. Ord src => PSource src -> PSource src -> PSource src
min :: PSource src -> PSource src -> PSource src
Ord, Int -> PSource src -> ShowS
[PSource src] -> ShowS
PSource src -> String
(Int -> PSource src -> ShowS)
-> (PSource src -> String)
-> ([PSource src] -> ShowS)
-> Show (PSource src)
forall src. Show src => Int -> PSource src -> ShowS
forall src. Show src => [PSource src] -> ShowS
forall src. Show src => PSource src -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall src. Show src => Int -> PSource src -> ShowS
showsPrec :: Int -> PSource src -> ShowS
$cshow :: forall src. Show src => PSource src -> String
show :: PSource src -> String
$cshowList :: forall src. Show src => [PSource src] -> ShowS
showList :: [PSource src] -> ShowS
Show, (forall x. PSource src -> Rep (PSource src) x)
-> (forall x. Rep (PSource src) x -> PSource src)
-> Generic (PSource src)
forall x. Rep (PSource src) x -> PSource src
forall x. PSource src -> Rep (PSource src) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall src x. Rep (PSource src) x -> PSource src
forall src x. PSource src -> Rep (PSource src) x
$cfrom :: forall src x. PSource src -> Rep (PSource src) x
from :: forall x. PSource src -> Rep (PSource src) x
$cto :: forall src x. Rep (PSource src) x -> PSource src
to :: forall x. Rep (PSource src) x -> PSource src
Generic, (forall a b. (a -> b) -> PSource a -> PSource b)
-> (forall a b. a -> PSource b -> PSource a) -> Functor PSource
forall a b. a -> PSource b -> PSource a
forall a b. (a -> b) -> PSource a -> PSource b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall a b. (a -> b) -> PSource a -> PSource b
fmap :: forall a b. (a -> b) -> PSource a -> PSource b
$c<$ :: forall a b. a -> PSource b -> PSource a
<$ :: forall a b. a -> PSource b -> PSource a
Functor)
newtype CabalFileSource
= PCabalFile (FilePath, BS.ByteString)
deriving (Eq CabalFileSource
Eq CabalFileSource =>
(CabalFileSource -> CabalFileSource -> Ordering)
-> (CabalFileSource -> CabalFileSource -> Bool)
-> (CabalFileSource -> CabalFileSource -> Bool)
-> (CabalFileSource -> CabalFileSource -> Bool)
-> (CabalFileSource -> CabalFileSource -> Bool)
-> (CabalFileSource -> CabalFileSource -> CabalFileSource)
-> (CabalFileSource -> CabalFileSource -> CabalFileSource)
-> Ord CabalFileSource
CabalFileSource -> CabalFileSource -> Bool
CabalFileSource -> CabalFileSource -> Ordering
CabalFileSource -> CabalFileSource -> CabalFileSource
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: CabalFileSource -> CabalFileSource -> Ordering
compare :: CabalFileSource -> CabalFileSource -> Ordering
$c< :: CabalFileSource -> CabalFileSource -> Bool
< :: CabalFileSource -> CabalFileSource -> Bool
$c<= :: CabalFileSource -> CabalFileSource -> Bool
<= :: CabalFileSource -> CabalFileSource -> Bool
$c> :: CabalFileSource -> CabalFileSource -> Bool
> :: CabalFileSource -> CabalFileSource -> Bool
$c>= :: CabalFileSource -> CabalFileSource -> Bool
>= :: CabalFileSource -> CabalFileSource -> Bool
$cmax :: CabalFileSource -> CabalFileSource -> CabalFileSource
max :: CabalFileSource -> CabalFileSource -> CabalFileSource
$cmin :: CabalFileSource -> CabalFileSource -> CabalFileSource
min :: CabalFileSource -> CabalFileSource -> CabalFileSource
Ord, Int -> CabalFileSource -> ShowS
[CabalFileSource] -> ShowS
CabalFileSource -> String
(Int -> CabalFileSource -> ShowS)
-> (CabalFileSource -> String)
-> ([CabalFileSource] -> ShowS)
-> Show CabalFileSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CabalFileSource -> ShowS
showsPrec :: Int -> CabalFileSource -> ShowS
$cshow :: CabalFileSource -> String
show :: CabalFileSource -> String
$cshowList :: [CabalFileSource] -> ShowS
showList :: [CabalFileSource] -> ShowS
Show, (forall x. CabalFileSource -> Rep CabalFileSource x)
-> (forall x. Rep CabalFileSource x -> CabalFileSource)
-> Generic CabalFileSource
forall x. Rep CabalFileSource x -> CabalFileSource
forall x. CabalFileSource -> Rep CabalFileSource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. CabalFileSource -> Rep CabalFileSource x
from :: forall x. CabalFileSource -> Rep CabalFileSource x
$cto :: forall x. Rep CabalFileSource x -> CabalFileSource
to :: forall x. Rep CabalFileSource x -> CabalFileSource
Generic)
data InstalledPackageInfoSource
= PInstalledPackageInfo
deriving (InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
(InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Bool)
-> Eq InstalledPackageInfoSource
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
== :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
$c/= :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
/= :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
Eq, Eq InstalledPackageInfoSource
Eq InstalledPackageInfoSource =>
(InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Ordering)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Bool)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Bool)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Bool)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Bool)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource)
-> (InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource)
-> Ord InstalledPackageInfoSource
InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Ordering
InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Ordering
compare :: InstalledPackageInfoSource
-> InstalledPackageInfoSource -> Ordering
$c< :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
< :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
$c<= :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
<= :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
$c> :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
> :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
$c>= :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
>= :: InstalledPackageInfoSource -> InstalledPackageInfoSource -> Bool
$cmax :: InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource
max :: InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource
$cmin :: InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource
min :: InstalledPackageInfoSource
-> InstalledPackageInfoSource -> InstalledPackageInfoSource
Ord, Int -> InstalledPackageInfoSource -> ShowS
[InstalledPackageInfoSource] -> ShowS
InstalledPackageInfoSource -> String
(Int -> InstalledPackageInfoSource -> ShowS)
-> (InstalledPackageInfoSource -> String)
-> ([InstalledPackageInfoSource] -> ShowS)
-> Show InstalledPackageInfoSource
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InstalledPackageInfoSource -> ShowS
showsPrec :: Int -> InstalledPackageInfoSource -> ShowS
$cshow :: InstalledPackageInfoSource -> String
show :: InstalledPackageInfoSource -> String
$cshowList :: [InstalledPackageInfoSource] -> ShowS
showList :: [InstalledPackageInfoSource] -> ShowS
Show, (forall x.
InstalledPackageInfoSource -> Rep InstalledPackageInfoSource x)
-> (forall x.
Rep InstalledPackageInfoSource x -> InstalledPackageInfoSource)
-> Generic InstalledPackageInfoSource
forall x.
Rep InstalledPackageInfoSource x -> InstalledPackageInfoSource
forall x.
InstalledPackageInfoSource -> Rep InstalledPackageInfoSource x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
InstalledPackageInfoSource -> Rep InstalledPackageInfoSource x
from :: forall x.
InstalledPackageInfoSource -> Rep InstalledPackageInfoSource x
$cto :: forall x.
Rep InstalledPackageInfoSource x -> InstalledPackageInfoSource
to :: forall x.
Rep InstalledPackageInfoSource x -> InstalledPackageInfoSource
Generic)
renderCabalFileSource :: CabalFileSource -> String
renderCabalFileSource :: CabalFileSource -> String
renderCabalFileSource (PCabalFile (String
path, ByteString
_)) = String
path
renderInstalledPackageInfoSource :: InstalledPackageInfoSource -> String
renderInstalledPackageInfoSource :: InstalledPackageInfoSource -> String
renderInstalledPackageInfoSource InstalledPackageInfoSource
PInstalledPackageInfo = String
""
instance Eq CabalFileSource where
PCabalFile (String
path, ByteString
_) == :: CabalFileSource -> CabalFileSource -> Bool
== PCabalFile (String
path', ByteString
_) = String
path String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
path'
instance Eq src => Eq (PSource src) where
PKnownSource src
src == :: PSource src -> PSource src -> Bool
== PKnownSource src
src' = src
src src -> src -> Bool
forall a. Eq a => a -> a -> Bool
== src
src'
PSource src
PUnknownSource == PSource src
PUnknownSource = Bool
True
PSource src
_ == PSource src
_ = Bool
False
instance Binary src => Binary (PSource src)
instance NFData src => NFData (PSource src)