This commit is contained in:
Michael Snoyman 2015-01-14 08:18:30 +02:00
parent cd23e9856b
commit b08210debd
2 changed files with 27 additions and 10 deletions

View File

@ -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"

View File

@ -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