on master help sign in
add publish check to verify that downloaded code builds as well
commit59245eba05cea4341d48fd890f7b38432c34a96e authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 11 Jun 2019, 12:51 (7 years ago) parent34b71bd
2 files changed+28−4
builder/src/Reporting/Exit.hs+5 terminal/src/Publish.hs+23−4
builder/src/Reporting/Exit.hs+5
@@ -285,6 +285,11 @@ data Publish
285285 | PublishMissingTag V.Version
286286 | PublishNoGit
287287 | PublishLocalChanges V.Version
288+ --
289+ | PublishZipBadDetails Details
290+ | PublishZipApplication
291+ | PublishZipNoExposed
292+ | PublishZipBuildProblem BuildProblem
288293
289294
290295publishToReport :: Publish -> Help.Report
terminal/src/Publish.hs+23−4
@@ -260,11 +260,16 @@ verifyZip (Env root _ manager _ _) pkg vsn =
260260
261261 reportZipBuildCheck $
262262 Dir.withCurrentDirectory prepublishDir $
263− error "TODO Build.generateDocs"
263+ verifyZipBuild prepublishDir
264264
265265 return sha
266266
267267
268+toZipUrl :: Pkg.Name -> V.Version -> String
269+toZipUrl pkg vsn =
270+ "https://github.com/" ++ Pkg.toUrl pkg ++ "/zipball/" ++ V.toChars vsn ++ "/"
271+
272+
268273withTempDir :: FilePath -> (FilePath -> Task.Task x a) -> Task.Task x a
269274withTempDir root callback =
270275 let
@@ -277,9 +282,23 @@ withTempDir root callback =
277282 (Task.run (callback dir))
278283
279284
280−toZipUrl :: Pkg.Name -> V.Version -> String
281−toZipUrl pkg vsn =
282− "https://github.com/" ++ Pkg.toUrl pkg ++ "/zipball/" ++ V.toChars vsn ++ "/"
285+verifyZipBuild :: FilePath -> IO (Either Exit.Publish ())
286+verifyZipBuild root =
287+ Task.run $
288+ do details@(Details.Details _ outline _ _ _) <-
289+ Task.eio Exit.PublishZipBadDetails $
290+ Details.load Reporting.silent root
291+
292+ exposed <-
293+ case outline of
294+ Details.ValidApp _ -> Task.throw Exit.PublishZipApplication
295+ Details.ValidPkg _ [] -> Task.throw Exit.PublishZipNoExposed
296+ Details.ValidPkg _ (e:es) -> return (NE.List e es)
297+
298+ _ <- Task.eio Exit.PublishZipBuildProblem $
299+ Build.fromExposed Reporting.silent root details Build.KeepDocs exposed
300+
301+ return ()
283302
284303
285304