mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-12 04:08:29 +01:00
Upload snapshots.json to S3 (commercialhaskell/stack#380)
This commit is contained in:
parent
b71e551737
commit
8f20a226fe
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user