{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} module Stack.Types.VersionedDownloadInfo ( VersionedDownloadInfo (..) ) where import Pantry.Internal.AesonExtended ( FromJSON (..), WithJSONWarnings (..), (..:) , withObjectWarnings ) import Stack.Prelude import Stack.Types.DownloadInfo ( DownloadInfo, parseDownloadInfoFromObject ) data VersionedDownloadInfo = VersionedDownloadInfo { VersionedDownloadInfo -> Version vdiVersion :: Version , VersionedDownloadInfo -> DownloadInfo vdiDownloadInfo :: DownloadInfo } deriving Int -> VersionedDownloadInfo -> ShowS [VersionedDownloadInfo] -> ShowS VersionedDownloadInfo -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [VersionedDownloadInfo] -> ShowS $cshowList :: [VersionedDownloadInfo] -> ShowS show :: VersionedDownloadInfo -> String $cshow :: VersionedDownloadInfo -> String showsPrec :: Int -> VersionedDownloadInfo -> ShowS $cshowsPrec :: Int -> VersionedDownloadInfo -> ShowS Show instance FromJSON (WithJSONWarnings VersionedDownloadInfo) where parseJSON :: Value -> Parser (WithJSONWarnings VersionedDownloadInfo) parseJSON = forall a. String -> (Object -> WarningParser a) -> Value -> Parser (WithJSONWarnings a) withObjectWarnings String "VersionedDownloadInfo" forall a b. (a -> b) -> a -> b $ \Object o -> do CabalString Version version <- Object o forall a. FromJSON a => Object -> Text -> WarningParser a ..: Text "version" DownloadInfo downloadInfo <- Object -> WarningParser DownloadInfo parseDownloadInfoFromObject Object o forall (f :: * -> *) a. Applicative f => a -> f a pure VersionedDownloadInfo { vdiVersion :: Version vdiVersion = Version version , vdiDownloadInfo :: DownloadInfo vdiDownloadInfo = DownloadInfo downloadInfo }