mirror of
https://github.com/sol/hpack.git
synced 2024-10-04 11:47:15 +03:00
Refactoring
This commit is contained in:
parent
0e72731acf
commit
65db9de3bb
@ -40,7 +40,7 @@ instance FromValue BuildTools where
|
||||
parse :: Parse ParseBuildTool DependencyVersion
|
||||
parse = Parse {
|
||||
parseString = buildToolFromString
|
||||
, parseListItem = fmap SourceDependency . sourceDependency
|
||||
, parseListItem = sourceDependency
|
||||
, parseDictItem = dependencyVersion
|
||||
, parseKey = nameToBuildTool
|
||||
}
|
||||
@ -54,10 +54,10 @@ instance FromValue BuildTools where
|
||||
buildToolFromString s = parseQualifiedBuildTool s <|> parseUnqualifiedBuildTool s
|
||||
|
||||
parseQualifiedBuildTool :: Monad m => Text -> m (ParseBuildTool, DependencyVersion)
|
||||
parseQualifiedBuildTool = fmap f . cabalParse "build tool" . T.unpack
|
||||
parseQualifiedBuildTool = fmap fromCabal . cabalParse "build tool" . T.unpack
|
||||
where
|
||||
f :: D.ExeDependency -> (ParseBuildTool, DependencyVersion)
|
||||
f (D.ExeDependency package executable version) = (
|
||||
fromCabal :: D.ExeDependency -> (ParseBuildTool, DependencyVersion)
|
||||
fromCabal (D.ExeDependency package executable version) = (
|
||||
QualifiedBuildTool (D.unPackageName package) (D.unUnqualComponentName executable)
|
||||
, VersionConstraint $ versionConstraintFromCabal version
|
||||
)
|
||||
@ -81,10 +81,7 @@ instance FromValue SystemBuildTools where
|
||||
}
|
||||
|
||||
parseSystemBuildTool :: Monad m => Text -> m (String, VersionConstraint)
|
||||
parseSystemBuildTool = fmap fromCabal . parseCabalBuildTool . T.unpack
|
||||
parseSystemBuildTool = fmap fromCabal . cabalParse "system build tool" . T.unpack
|
||||
where
|
||||
fromCabal :: D.LegacyExeDependency -> (String, VersionConstraint)
|
||||
fromCabal (D.LegacyExeDependency name version) = (name, versionConstraintFromCabal version)
|
||||
|
||||
parseCabalBuildTool :: Monad m => String -> m D.LegacyExeDependency
|
||||
parseCabalBuildTool = cabalParse "system build tool"
|
||||
|
@ -9,7 +9,6 @@ module Hpack.Syntax.Dependencies (
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Semigroup (Semigroup(..))
|
||||
import Control.Monad
|
||||
import qualified Distribution.Package as D
|
||||
import Data.Map.Lazy (Map)
|
||||
import qualified Data.Map.Lazy as Map
|
||||
@ -35,16 +34,13 @@ instance FromValue Dependencies where
|
||||
parse :: Parse String DependencyVersion
|
||||
parse = Parse {
|
||||
parseString = parseDependency "dependency"
|
||||
, parseListItem = fmap SourceDependency . sourceDependency
|
||||
, parseListItem = sourceDependency
|
||||
, parseDictItem = dependencyVersion
|
||||
, parseKey = T.unpack
|
||||
}
|
||||
|
||||
parseDependency :: Monad m => String -> Text -> m (String, DependencyVersion)
|
||||
parseDependency subject = liftM fromCabal . parseCabalDependency subject . T.unpack
|
||||
parseDependency subject = fmap fromCabal . cabalParse subject . T.unpack
|
||||
where
|
||||
fromCabal :: D.Dependency -> (String, DependencyVersion)
|
||||
fromCabal d = (D.unPackageName $ D.depPkgName d, VersionConstraint . versionConstraintFromCabal $ D.depVerRange d)
|
||||
|
||||
parseCabalDependency :: Monad m => String -> String -> m D.Dependency
|
||||
parseCabalDependency = cabalParse
|
||||
|
@ -71,7 +71,7 @@ instance FromValue DependencyVersion where
|
||||
dependencyVersion :: Value -> Parser DependencyVersion
|
||||
dependencyVersion v = case v of
|
||||
Null -> return anyVersion
|
||||
Object o -> SourceDependency <$> sourceDependency o
|
||||
Object o -> sourceDependency o
|
||||
Number n -> return (VersionConstraint $ numericVersionConstraint n)
|
||||
String s -> VersionConstraint <$> stringVersionConstraint s
|
||||
_ -> typeMismatch "Null, Object, Number, or String" v
|
||||
@ -79,7 +79,7 @@ dependencyVersion v = case v of
|
||||
data SourceDependency = GitRef GitUrl GitRef (Maybe FilePath) | Local FilePath
|
||||
deriving (Eq, Show)
|
||||
|
||||
sourceDependency :: Object -> Parser SourceDependency
|
||||
sourceDependency :: Object -> Parser DependencyVersion
|
||||
sourceDependency o = let
|
||||
local :: Parser SourceDependency
|
||||
local = Local <$> o .: "path"
|
||||
@ -99,7 +99,7 @@ sourceDependency o = let
|
||||
subdir :: Parser (Maybe FilePath)
|
||||
subdir = o .:? "subdir"
|
||||
|
||||
in local <|> git
|
||||
in SourceDependency <$> (local <|> git)
|
||||
|
||||
numericVersionConstraint :: Scientific -> VersionConstraint
|
||||
numericVersionConstraint n = VersionRange ("==" ++ version)
|
||||
|
Loading…
Reference in New Issue
Block a user