on master help sign in
LTSHaskell distro name haskell/hackage-server#307
b08210dMichael Snoyman
Stackage/CompleteBuild.hs+4−1
@@ -54,6 +54,7 @@ data Settings = Settings
54 , slug :: Text
54 , slug :: Text
55 , setArgs :: Text -> UploadBundle -> UploadBundle
55 , setArgs :: Text -> UploadBundle -> UploadBundle
56 , postBuild :: IO ()
56 , postBuild :: IO ()
57+ , distroName :: Text -- ^ distro name on Hackage
57 }
58 }
58
59
59nightlyPlanFile :: Text -- ^ day
60nightlyPlanFile :: Text -- ^ day
@@ -77,6 +78,7 @@ nightlySettings day plan' = Settings
77 , setArgs = \ghcVer ub -> ub { ubNightly = Just ghcVer }
78 , setArgs = \ghcVer ub -> ub { ubNightly = Just ghcVer }
78 , plan = plan'
79 , plan = plan'
79 , postBuild = return ()
80 , postBuild = return ()
81+ , distroName = "Stackage"
80 }
82 }
81 where
83 where
82 slug' = "nightly-" ++ day
84 slug' = "nightly-" ++ day
@@ -137,6 +139,7 @@ getSettings man (LTS bumpType) = do
137 git ["commit", "-m", "Added new LTS release: " ++ show new]
139 git ["commit", "-m", "Added new LTS release: " ++ show new]
138 putStrLn "Pushing to Git repository"
140 putStrLn "Pushing to Git repository"
139 git ["push"]
141 git ["push"]
142+ , distroName = "LTSHaskell"
140 }
143 }
141
144
142data LTSVer = LTSVer !Int !Int
145data LTSVer = LTSVer !Int !Int
@@ -274,7 +277,7 @@ finallyUpload settings@Settings{..} man = do
274 case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of
277 case map encodeUtf8 $ words $ decodeUtf8 $ either (const "") id ecreds of
275 [username, password] -> do
278 [username, password] -> do
276 putStrLn "Uploading as Hackage distro"
279 putStrLn "Uploading as Hackage distro"
277− res2 <- uploadHackageDistro plan username password man
280+ res2 <- uploadHackageDistroNamed distroName plan username password man
278 putStrLn $ "Distro upload response: " ++ tshow res2
281 putStrLn $ "Distro upload response: " ++ tshow res2
279 _ -> putStrLn "No creds found, skipping Hackage distro upload"
282 _ -> putStrLn "No creds found, skipping Hackage distro upload"
280
283
Stackage/Upload.hs+23−9
@@ -11,6 +11,7 @@ module Stackage.Upload
11 , UploadDocs (..)
11 , UploadDocs (..)
12 , uploadDocs
12 , uploadDocs
13 , uploadHackageDistro
13 , uploadHackageDistro
14+ , uploadHackageDistroNamed
14 , UploadDocMap (..)
15 , UploadDocMap (..)
15 , uploadDocMap
16 , uploadDocMap
16 ) where
17 ) where
@@ -149,8 +150,28 @@ uploadHackageDistro :: BuildPlan
149 -> ByteString -- ^ Hackage password
150 -> ByteString -- ^ Hackage password
150 -> Manager
151 -> Manager
151 -> IO (Response LByteString)
152 -> IO (Response LByteString)
152−uploadHackageDistro bp username password =
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+ }
153− httpLbs (applyBasicAuth username password req)
174+ httpLbs (applyBasicAuth username password req2) manager
154 where
175 where
155 csv = encodeUtf8
176 csv = encodeUtf8
156 $ builderToLazy
177 $ builderToLazy
@@ -168,13 +189,6 @@ uploadHackageDistro bp username password =
168 (toBuilder $ display name) ++
189 (toBuilder $ display name) ++
169 "\""
190 "\""
170
191
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−
178data UploadDocMap = UploadDocMap
192data UploadDocMap = UploadDocMap
179 { udmServer :: StackageServer
193 { udmServer :: StackageServer
180 , udmAuthToken :: Text
194 , udmAuthToken :: Text