@@ -8,6 +8,7 @@ module Publish
88import Control.Exception (bracket_)
99import Control.Monad (void)
1010import qualified Data.List as List
11+import qualified Data.NonEmptyList as NE
1112import qualified Data.Utf8 as Utf8
1213import qualified System.Directory as Dir
1314import qualified System.Exit as Exit
@@ -17,10 +18,12 @@ import qualified System.Info as Info
1718import qualified System.IO as IO
1819import qualified System.Process as Process
1920
21+import qualified Build
2022import qualified Deps.Bump as Bump
2123import qualified Deps.Diff as Diff
2224import qualified Deps.Registry as Registry
2325import qualified Deps.Website as Website
26+import qualified Elm.Details as Details
2427import qualified Elm.Docs as Docs
2528import qualified Elm.Magnitude as M
2629import qualified Elm.Outline as Outline
@@ -107,7 +110,7 @@ publish env@(Env root cache manager registry outline) =
107110
108111 verifyReadme root
109112 verifyLicense root
110− docs <- error "TODO Project.generateDocs details" details
113+ docs <- verifyBuild root
111114 verifyVersion env pkg vsn docs maybeKnownVersions
112115 commitHash <- verifyTag manager pkg vsn
113116 verifyNoChanges commitHash vsn
@@ -172,6 +175,27 @@ verifyLicense root =
172175
173176
174177
178+-- VERIFY BUILD
179+
180+
181+verifyBuild :: FilePath -> Task.Task Exit.Publish Docs.Documentation
182+verifyBuild root =
183+ reportBuildCheck $ Task.run $
184+ do details@(Details.Details _ outline _ _ _) <-
185+ Task.eio Exit.PublishBadDetails $
186+ Details.load Reporting.silent root
187+
188+ exposed <-
189+ case outline of
190+ Details.ValidApp _ -> Task.throw Exit.PublishApplication
191+ Details.ValidPkg _ [] -> Task.throw Exit.PublishNoExposed
192+ Details.ValidPkg _ (e:es) -> return (NE.List e es)
193+
194+ Task.eio Exit.PublishBuildProblem $
195+ Build.fromExposed Reporting.silent root details Build.KeepDocs exposed
196+
197+
198+
175199-- VERIFY GITHUB TAG
176200
177201