stack-all-0.3.1: src/Snapshots.hs
{-# LANGUAGE OverloadedStrings #-}
module Snapshots (
getMajorVers,
latestSnapshot
)
where
import Data.Aeson
import Data.List.Extra
import qualified Data.HashMap.Strict as H
import qualified Data.Text as T
import Network.HTTP.Query
import System.Cached.JSON
import MajorVer
excludedMajors :: [MajorVer]
excludedMajors = [LTS 17, LTS 15, LTS 7, LTS 3, LTS 0]
getMajorVers :: IO [MajorVer]
getMajorVers = do
obj <- getSnapshots
return $ reverse . sort $ map (readMajor . T.unpack) (H.keys obj \\ ["lts"]) \\ excludedMajors
latestSnapshot :: MajorVer -> IO (Maybe String)
latestSnapshot ver = do
lookupKey (T.pack (showMajor ver)) <$> getSnapshots
getSnapshots :: IO Object
getSnapshots =
getCachedJSON "stackage-snapshots" "snapshots.json" "http://haddock.stackage.org/snapshots.json" 200