module Staversion.Internal.Query
( PackageName,
Resolver,
PackageSource(..),
sourceDesc,
Query(..),
parseQuery,
ErrorMsg
) where
import Data.List (isSuffixOf)
import Data.Text (Text, pack)
type PackageName = Text
type Resolver = String
data PackageSource = SourceStackage Resolver
| SourceHackage
deriving (Show,Eq,Ord)
data Query = QueryName PackageName
| QueryCabalFile FilePath
deriving (Show,Eq,Ord)
type ErrorMsg = String
sourceDesc :: PackageSource -> Text
sourceDesc (SourceStackage r) = pack r
sourceDesc SourceHackage = "latest in hackage"
parseQuery :: String -> Query
parseQuery s = if ".cabal" `isSuffixOf` s
then QueryCabalFile s
else QueryName $ pack s