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