Upload snapshots.json to S3 (commercialhaskell/stack#380)

This commit is contained in:
Michael Snoyman 2015-06-23 11:01:28 +03:00
parent b71e551737
commit 8f20a226fe
3 changed files with 35 additions and 20 deletions

View File

@ -41,25 +41,7 @@ getDownloadSnapshotsJsonR :: Handler Value
getDownloadSnapshotsJsonR = getDownloadLtsSnapshotsJsonR
getDownloadLtsSnapshotsJsonR :: Handler Value
getDownloadLtsSnapshotsJsonR = do
mlatestNightly <- newestNightly
ltses <- ltsMajorVersions
let lts = case ltses of
[] -> []
majorVersions@(latest:_) ->
("lts" .= printLts latest)
: map toObj majorVersions
nightly = case mlatestNightly of
Nothing -> id
Just n -> (("nightly" .= printNightly n):)
return $ object $ nightly lts
where
toObj lts@(major, _) =
pack ("lts-" ++ show major) .= printLts lts
printLts (major, minor) =
"lts-" ++ show major ++ "." ++ show minor
printNightly day = "nightly-" ++ tshow day
getDownloadLtsSnapshotsJsonR = snapshotsJSON
-- Print the ghc major version for the given snapshot.
ghcMajorVersionText :: Snapshot -> Text

View File

@ -31,6 +31,7 @@ module Stackage.Database
, getSnapshots
, currentSchema
, last5Lts5Nightly
, snapshotsJSON
) where
import Database.Sqlite (SqliteException)
@ -61,6 +62,7 @@ import Control.Monad.Logger
import System.IO.Temp
import qualified Database.Esqueleto as E
import Data.Yaml (decode)
import qualified Data.Aeson as A
currentSchema :: Int
currentSchema = 1
@ -652,3 +654,24 @@ last5Lts5Nightly = run $ do
where
l (Entity _ x) = SNLts (ltsMajor x) (ltsMinor x)
n (Entity _ x) = SNNightly (nightlyDay x)
snapshotsJSON :: GetStackageDatabase m => m A.Value
snapshotsJSON = do
mlatestNightly <- newestNightly
ltses <- ltsMajorVersions
let lts = case ltses of
[] -> []
majorVersions@(latest:_) ->
("lts" A..= printLts latest)
: map toObj majorVersions
nightly = case mlatestNightly of
Nothing -> id
Just n -> (("nightly" A..= printNightly n):)
return $ A.object $ nightly lts
where
toObj lts@(major, _) =
pack ("lts-" ++ show major) A..= printLts lts
printLts (major, minor) =
"lts-" ++ show major ++ "." ++ show minor
printNightly day = "nightly-" ++ tshow day

View File

@ -31,6 +31,9 @@ import qualified Data.Conduit.Binary as CB
import Data.Conduit.Zlib (WindowBits (WindowBits),
compress, ungzip)
import qualified Hoogle
import System.IO.Temp (withSystemTempFile)
import qualified Data.Aeson as A
import qualified Data.ByteString.Lazy as L
filename' :: Text
filename' = concat
@ -149,7 +152,7 @@ stackageServerCron = do
$$ compress 9 (WindowBits 31)
=$ CB.sinkFile fpgz
body <- sourceFileIO fpgz
let po =
let po =
set poACL (Just PublicRead)
$ putObject body "haddock.stackage.org" key
putStrLn $ "Uploading: " ++ key
@ -163,6 +166,13 @@ stackageServerCron = do
upload dbfp keyName
db <- openStackageDatabase dbfp
snapshots <- runReaderT snapshotsJSON db
withSystemTempFile "snapshots.json" $ \fp h -> do
L.hPut h $ A.encode snapshots
hClose h
upload (fpFromString fp) "snapshots.json"
names <- runReaderT last5Lts5Nightly db
let manager = view envManager env
forM_ names $ \name -> do