forked from commercialhaskell/stack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathVersionedDownloadInfo.hs
More file actions
29 lines (25 loc) · 924 Bytes
/
VersionedDownloadInfo.hs
File metadata and controls
29 lines (25 loc) · 924 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE NoFieldSelectors #-}
{-# LANGUAGE OverloadedStrings #-}
module Stack.Types.VersionedDownloadInfo
( VersionedDownloadInfo (..)
) where
import Data.Aeson.Types ( FromJSON (..) )
import Data.Aeson.WarningParser
( WithJSONWarnings (..), (..:), withObjectWarnings )
import Stack.Prelude
import Stack.Types.DownloadInfo
( DownloadInfo, parseDownloadInfoFromObject )
data VersionedDownloadInfo = VersionedDownloadInfo
{ version :: Version
, downloadInfo :: DownloadInfo
}
deriving Show
instance FromJSON (WithJSONWarnings VersionedDownloadInfo) where
parseJSON = withObjectWarnings "VersionedDownloadInfo" $ \o -> do
CabalString version <- o ..: "version"
downloadInfo <- parseDownloadInfoFromObject o
pure VersionedDownloadInfo
{ version
, downloadInfo
}