on master help sign in
add logic to verify build and generate docs in `publish`
34b71bdEvan Czaplicki
builder/src/Reporting/Exit.hs+2
@@ -264,6 +264,7 @@ newPackageOverview =
264data Publish
264data Publish
265 = PublishNoOutline
265 = PublishNoOutline
266 | PublishBadOutline Outline
266 | PublishBadOutline Outline
267+ | PublishBadDetails Details
267 | PublishMustHaveLatestRegistry RegistryProblem
268 | PublishMustHaveLatestRegistry RegistryProblem
268 | PublishApplication
269 | PublishApplication
269 | PublishNotInitialVersion V.Version
270 | PublishNotInitialVersion V.Version
@@ -275,6 +276,7 @@ data Publish
275 | PublishNoReadme
276 | PublishNoReadme
276 | PublishShortReadme
277 | PublishShortReadme
277 | PublishNoLicense
278 | PublishNoLicense
279+ | PublishBuildProblem BuildProblem
278 | PublishCannotGetTag Http.Error
280 | PublishCannotGetTag Http.Error
279 | PublishCannotGetZip Http.Error
281 | PublishCannotGetZip Http.Error
280 | PublishCannotDecodeZip
282 | PublishCannotDecodeZip
terminal/src/Publish.hs+25−1
@@ -8,6 +8,7 @@ module Publish
8import Control.Exception (bracket_)
8import Control.Exception (bracket_)
9import Control.Monad (void)
9import Control.Monad (void)
10import qualified Data.List as List
10import qualified Data.List as List
11+import qualified Data.NonEmptyList as NE
11import qualified Data.Utf8 as Utf8
12import qualified Data.Utf8 as Utf8
12import qualified System.Directory as Dir
13import qualified System.Directory as Dir
13import qualified System.Exit as Exit
14import qualified System.Exit as Exit
@@ -17,10 +18,12 @@ import qualified System.Info as Info
17import qualified System.IO as IO
18import qualified System.IO as IO
18import qualified System.Process as Process
19import qualified System.Process as Process
19
20
21+import qualified Build
20import qualified Deps.Bump as Bump
22import qualified Deps.Bump as Bump
21import qualified Deps.Diff as Diff
23import qualified Deps.Diff as Diff
22import qualified Deps.Registry as Registry
24import qualified Deps.Registry as Registry
23import qualified Deps.Website as Website
25import qualified Deps.Website as Website
26+import qualified Elm.Details as Details
24import qualified Elm.Docs as Docs
27import qualified Elm.Docs as Docs
25import qualified Elm.Magnitude as M
28import qualified Elm.Magnitude as M
26import qualified Elm.Outline as Outline
29import qualified Elm.Outline as Outline
@@ -107,7 +110,7 @@ publish env@(Env root cache manager registry outline) =
107
110
108 verifyReadme root
111 verifyReadme root
109 verifyLicense root
112 verifyLicense root
110− docs <- error "TODO Project.generateDocs details" details
113+ docs <- verifyBuild root
111 verifyVersion env pkg vsn docs maybeKnownVersions
114 verifyVersion env pkg vsn docs maybeKnownVersions
112 commitHash <- verifyTag manager pkg vsn
115 commitHash <- verifyTag manager pkg vsn
113 verifyNoChanges commitHash vsn
116 verifyNoChanges commitHash vsn
@@ -172,6 +175,27 @@ verifyLicense root =
172
175
173
176
174
177
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+
175-- VERIFY GITHUB TAG
199-- VERIFY GITHUB TAG
176
200
177
201