From ad04f9313a435aa81840a262ea04893dbb8b49d5 Mon Sep 17 00:00:00 2001 From: Vito Canadi Date: Sat, 11 Aug 2018 02:47:03 +0200 Subject: [PATCH] NXG-32 Make optional project fields truly optional ^NXG-32 Done --- hs/lib/Nixage/Project/Extensible.hs | 2 +- hs/lib/Nixage/Project/Native.hs | 10 +++++----- hs/lib/Nixage/Project/Yaml.hs | 14 +++++++------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/hs/lib/Nixage/Project/Extensible.hs b/hs/lib/Nixage/Project/Extensible.hs index 221d5b1..4c5e9d8 100644 --- a/hs/lib/Nixage/Project/Extensible.hs +++ b/hs/lib/Nixage/Project/Extensible.hs @@ -41,7 +41,7 @@ type family XProject x :: * -- | Extensible package version specification data ExtraDepVersion x = HackageDepVersion !(XHackageDepVersion x) PackageVersion - | SourceDepVersion !(XSourceDepVersion x) ExternalSource NixHash (Maybe FilePath) + | SourceDepVersion !(XSourceDepVersion x) ExternalSource (Maybe NixHash) (Maybe FilePath) | XExtraDepVersion !(XXExtraDepVersion x) deriving (Generic) diff --git a/hs/lib/Nixage/Project/Native.hs b/hs/lib/Nixage/Project/Native.hs index 918cc93..74bf814 100644 --- a/hs/lib/Nixage/Project/Native.hs +++ b/hs/lib/Nixage/Project/Native.hs @@ -60,21 +60,21 @@ pattern HackageDepVersionNative :: PackageVersion pattern HackageDepVersionNative pv = HackageDepVersion () pv pattern SourceDepVersionNative :: ExternalSource - -> NixHash + -> Maybe NixHash -> Maybe FilePath -> ExtraDepVersion AstNixage -pattern SourceDepVersionNative es nh msd = SourceDepVersion () es nh msd +pattern SourceDepVersionNative es mnh msd = SourceDepVersion () es mnh msd instance Monad m => ToNix (ExtraDepVersion AstNixage) m NExpr where toNix (HackageDepVersion () s) = return $ mkStr s - toNix (SourceDepVersion () (GitSource git rev) sha256 subdir) = + toNix (SourceDepVersion () (GitSource git rev) mnh msd) = return $ mkNonRecSet $ [ "git" $= mkStr git , "rev" $= mkStr rev - , "sha256" $= mkStr sha256 ] - <> maybeToList (("subdir" $=) . mkStr . toText <$> subdir) + <> maybeToList (("sha256" $=) . mkStr <$> mnh) + <> maybeToList (("subdir" $=) . mkStr . toText <$> msd) toNix (XExtraDepVersion v) = absurd v instance Monad m => ToNix StackageVersion m NExpr where diff --git a/hs/lib/Nixage/Project/Yaml.hs b/hs/lib/Nixage/Project/Yaml.hs index 34a6bfc..b7722e2 100644 --- a/hs/lib/Nixage/Project/Yaml.hs +++ b/hs/lib/Nixage/Project/Yaml.hs @@ -56,18 +56,18 @@ pattern HackageDepVersionYaml :: PackageVersion pattern HackageDepVersionYaml pv = HackageDepVersion () pv pattern SourceDepVersionYaml :: ExternalSource - -> NixHash + -> Maybe NixHash -> Maybe FilePath -> ExtraDepVersion AstYaml -pattern SourceDepVersionYaml es nh msd = SourceDepVersion () es nh msd +pattern SourceDepVersionYaml es mnh msd = SourceDepVersion () es mnh msd instance FromJSON (ExtraDepVersion AstYaml) where parseJSON (String s) = pure $ HackageDepVersionYaml s parseJSON (Object v) = SourceDepVersionYaml <$> externalSourceP - <*> v .: "sha256" - <*> v .: "subdir" + <*> v .:? "sha256" + <*> v .:? "subdir" where externalSourceP = GitSource @@ -90,6 +90,6 @@ projectYamlToProjectNative (Project () r mnv msv ps eds mgo) = ProjectNative r mnv msv ps eds' mgo where eds' = eds <&> \case - HackageDepVersion () v -> HackageDepVersionNative v - SourceDepVersion () es nh msb -> SourceDepVersionNative es nh msb - XExtraDepVersion v -> absurd v + HackageDepVersion () v -> HackageDepVersionNative v + SourceDepVersion () es mnh msb -> SourceDepVersionNative es mnh msb + XExtraDepVersion v -> absurd v