on master help sign in
LTSHaskell distro name haskell/hackage-server#307
commitb08210debd0d57de322d6be0ad9e39eb19ad2d41 authorMichael Snoyman <michael@snoyman.com> dateWed 14 Jan 2015, 08:18 (12 years ago) parentcd23e98
2 files changed+27−10
Stackage/CompleteBuild.hs+4−1 Stackage/Upload.hs+23−9
Stackage/CompleteBuild.hs+4−1
@@ -54,6 +54,7 @@ data Settings = Settings
5454 , slug :: Text
5555 , setArgs :: Text -> UploadBundle -> UploadBundle
5656 , postBuild :: IO ()
57+ , distroName :: Text -- ^ distro name on Hackage
5758 }
5859
5960nightlyPlanFile :: Text -- ^ day
@@ -77,6 +78,7 @@ nightlySettings day plan' = Settings
7778 , setArgs = \ghcVer ub -> ub { ubNightly = Just ghcVer }
7879 , plan = plan'
7980 , postBuild = return ()
81+ , distroName = "Stackage"
8082 }
8183 where
8284 slug' = "nightly-" ++ day
@@ -137,6 +139,7 @@ getSettings man (LTS bumpType) = do
137139 git ["commit", "-m", "Added new LTS release: " ++ show new]
138140 putStrLn "Pushing to Git repository"
139141 git ["push"]
142+ , distroName = "LTSHaskell"
140143 }
141144
142145data LTSVer = LTSVer !Int !Int
@@ -274,7 +277,7 @@ finallyUpload settings@Settings{..} man = do
274277 case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of
275278 [username, password] -> do
276279 putStrLn "Uploading as Hackage distro"
277− res2 <- uploadHackageDistro plan username password man
280+ res2 <- uploadHackageDistroNamed distroName plan username password man
278281 putStrLn $ "Distro upload response: " ++ tshow res2
279282 _ -> putStrLn "No creds found, skipping Hackage distro upload"
280283
Stackage/Upload.hs+23−9
@@ -11,6 +11,7 @@ module Stackage.Upload
1111 , UploadDocs (..)
1212 , uploadDocs
1313 , uploadHackageDistro
14+ , uploadHackageDistroNamed
1415 , UploadDocMap (..)
1516 , uploadDocMap
1617 ) where
@@ -149,8 +150,28 @@ uploadHackageDistro :: BuildPlan
149150 -> ByteString -- ^ Hackage password
150151 -> Manager
151152 -> IO (Response LByteString)
152−uploadHackageDistro bp username password =
153− httpLbs (applyBasicAuth username password req)
153+uploadHackageDistro = uploadHackageDistroNamed "Stackage"
154+
155+uploadHackageDistroNamed
156+ :: Text -- ^ distro name
157+ -> BuildPlan
158+ -> ByteString -- ^ Hackage username
159+ -> ByteString -- ^ Hackage password
160+ -> Manager
161+ -> IO (Response LByteString)
162+uploadHackageDistroNamed name bp username password manager = do
163+ req1 <- parseUrl $ concat
164+ [ "http://hackage.haskell.org/distro/"
165+ , unpack name
166+ , "/packages.csv"
167+ ]
168+ let req2 = req1
169+ { requestHeaders = [("Content-Type", "text/csv")]
170+ , requestBody = RequestBodyLBS csv
171+ , checkStatus = \_ _ _ -> Nothing
172+ , method = "PUT"
173+ }
174+ httpLbs (applyBasicAuth username password req2) manager
154175 where
155176 csv = encodeUtf8
156177 $ builderToLazy
@@ -168,13 +189,6 @@ uploadHackageDistro bp username password =
168189 (toBuilder $ display name) ++
169190 "\""
170191
171− req = "http://hackage.haskell.org/distro/Stackage/packages.csv"
172− { requestHeaders = [("Content-Type", "text/csv")]
173− , requestBody = RequestBodyLBS csv
174− , checkStatus = \_ _ _ -> Nothing
175− , method = "PUT"
176− }
177−
178192data UploadDocMap = UploadDocMap
179193 { udmServer :: StackageServer
180194 , udmAuthToken :: Text