From b08210debd0d57de322d6be0ad9e39eb19ad2d41 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 14 Jan 2015 08:18:30 +0200 Subject: [PATCH] LTSHaskell distro name haskell/hackage-server#307 --- Stackage/CompleteBuild.hs | 5 ++++- Stackage/Upload.hs | 32 +++++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/Stackage/CompleteBuild.hs b/Stackage/CompleteBuild.hs index 5960d960..cf74eef2 100644 --- a/Stackage/CompleteBuild.hs +++ b/Stackage/CompleteBuild.hs @@ -54,6 +54,7 @@ data Settings = Settings , slug :: Text , setArgs :: Text -> UploadBundle -> UploadBundle , postBuild :: IO () + , distroName :: Text -- ^ distro name on Hackage } nightlyPlanFile :: Text -- ^ day @@ -77,6 +78,7 @@ nightlySettings day plan' = Settings , setArgs = \ghcVer ub -> ub { ubNightly = Just ghcVer } , plan = plan' , postBuild = return () + , distroName = "Stackage" } where slug' = "nightly-" ++ day @@ -137,6 +139,7 @@ getSettings man (LTS bumpType) = do git ["commit", "-m", "Added new LTS release: " ++ show new] putStrLn "Pushing to Git repository" git ["push"] + , distroName = "LTSHaskell" } data LTSVer = LTSVer !Int !Int @@ -274,7 +277,7 @@ finallyUpload settings@Settings{..} man = do case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of [username, password] -> do putStrLn "Uploading as Hackage distro" - res2 <- uploadHackageDistro plan username password man + res2 <- uploadHackageDistroNamed distroName plan username password man putStrLn $ "Distro upload response: " ++ tshow res2 _ -> putStrLn "No creds found, skipping Hackage distro upload" diff --git a/Stackage/Upload.hs b/Stackage/Upload.hs index bb1c8246..c3e544e4 100644 --- a/Stackage/Upload.hs +++ b/Stackage/Upload.hs @@ -11,6 +11,7 @@ module Stackage.Upload , UploadDocs (..) , uploadDocs , uploadHackageDistro + , uploadHackageDistroNamed , UploadDocMap (..) , uploadDocMap ) where @@ -149,8 +150,28 @@ uploadHackageDistro :: BuildPlan -> ByteString -- ^ Hackage password -> Manager -> IO (Response LByteString) -uploadHackageDistro bp username password = - httpLbs (applyBasicAuth username password req) +uploadHackageDistro = uploadHackageDistroNamed "Stackage" + +uploadHackageDistroNamed + :: Text -- ^ distro name + -> BuildPlan + -> ByteString -- ^ Hackage username + -> ByteString -- ^ Hackage password + -> Manager + -> IO (Response LByteString) +uploadHackageDistroNamed name bp username password manager = do + req1 <- parseUrl $ concat + [ "http://hackage.haskell.org/distro/" + , unpack name + , "/packages.csv" + ] + let req2 = req1 + { requestHeaders = [("Content-Type", "text/csv")] + , requestBody = RequestBodyLBS csv + , checkStatus = \_ _ _ -> Nothing + , method = "PUT" + } + httpLbs (applyBasicAuth username password req2) manager where csv = encodeUtf8 $ builderToLazy @@ -168,13 +189,6 @@ uploadHackageDistro bp username password = (toBuilder $ display name) ++ "\"" - req = "http://hackage.haskell.org/distro/Stackage/packages.csv" - { requestHeaders = [("Content-Type", "text/csv")] - , requestBody = RequestBodyLBS csv - , checkStatus = \_ _ _ -> Nothing - , method = "PUT" - } - data UploadDocMap = UploadDocMap { udmServer :: StackageServer , udmAuthToken :: Text