module Ecluse.Core.Ecosystem (
Ecosystem (..),
ecosystemName,
parseEcosystem,
prefixFor,
) where
data Ecosystem
= Npm
| PyPI
| RubyGems
deriving stock (Ecosystem -> Ecosystem -> Bool
(Ecosystem -> Ecosystem -> Bool)
-> (Ecosystem -> Ecosystem -> Bool) -> Eq Ecosystem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Ecosystem -> Ecosystem -> Bool
== :: Ecosystem -> Ecosystem -> Bool
$c/= :: Ecosystem -> Ecosystem -> Bool
/= :: Ecosystem -> Ecosystem -> Bool
Eq, Eq Ecosystem
Eq Ecosystem =>
(Ecosystem -> Ecosystem -> Ordering)
-> (Ecosystem -> Ecosystem -> Bool)
-> (Ecosystem -> Ecosystem -> Bool)
-> (Ecosystem -> Ecosystem -> Bool)
-> (Ecosystem -> Ecosystem -> Bool)
-> (Ecosystem -> Ecosystem -> Ecosystem)
-> (Ecosystem -> Ecosystem -> Ecosystem)
-> Ord Ecosystem
Ecosystem -> Ecosystem -> Bool
Ecosystem -> Ecosystem -> Ordering
Ecosystem -> Ecosystem -> Ecosystem
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 :: Ecosystem -> Ecosystem -> Ordering
compare :: Ecosystem -> Ecosystem -> Ordering
$c< :: Ecosystem -> Ecosystem -> Bool
< :: Ecosystem -> Ecosystem -> Bool
$c<= :: Ecosystem -> Ecosystem -> Bool
<= :: Ecosystem -> Ecosystem -> Bool
$c> :: Ecosystem -> Ecosystem -> Bool
> :: Ecosystem -> Ecosystem -> Bool
$c>= :: Ecosystem -> Ecosystem -> Bool
>= :: Ecosystem -> Ecosystem -> Bool
$cmax :: Ecosystem -> Ecosystem -> Ecosystem
max :: Ecosystem -> Ecosystem -> Ecosystem
$cmin :: Ecosystem -> Ecosystem -> Ecosystem
min :: Ecosystem -> Ecosystem -> Ecosystem
Ord, Int -> Ecosystem -> ShowS
[Ecosystem] -> ShowS
Ecosystem -> String
(Int -> Ecosystem -> ShowS)
-> (Ecosystem -> String)
-> ([Ecosystem] -> ShowS)
-> Show Ecosystem
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Ecosystem -> ShowS
showsPrec :: Int -> Ecosystem -> ShowS
$cshow :: Ecosystem -> String
show :: Ecosystem -> String
$cshowList :: [Ecosystem] -> ShowS
showList :: [Ecosystem] -> ShowS
Show)
ecosystemName :: Ecosystem -> Text
ecosystemName :: Ecosystem -> Text
ecosystemName = \case
Ecosystem
Npm -> Text
"npm"
Ecosystem
PyPI -> Text
"pypi"
Ecosystem
RubyGems -> Text
"rubygems"
parseEcosystem :: Text -> Maybe Ecosystem
parseEcosystem :: Text -> Maybe Ecosystem
parseEcosystem = \case
Text
"npm" -> Ecosystem -> Maybe Ecosystem
forall a. a -> Maybe a
Just Ecosystem
Npm
Text
"pypi" -> Ecosystem -> Maybe Ecosystem
forall a. a -> Maybe a
Just Ecosystem
PyPI
Text
"rubygems" -> Ecosystem -> Maybe Ecosystem
forall a. a -> Maybe a
Just Ecosystem
RubyGems
Text
_ -> Maybe Ecosystem
forall a. Maybe a
Nothing
prefixFor :: Ecosystem -> NonEmpty Text
prefixFor :: Ecosystem -> NonEmpty Text
prefixFor Ecosystem
eco = Ecosystem -> Text
ecosystemName Ecosystem
eco Text -> [Text] -> NonEmpty Text
forall a. a -> [a] -> NonEmpty a
:| []