on master help sign in
start generating docs needed to bump versions
0dd1f5eEvan Czaplicki
terminal/src/Bump.hs+42−29
@@ -6,10 +6,14 @@ module Bump
6
6
7
7
8import qualified Data.List as List
8import qualified Data.List as List
9+import qualified Data.NonEmptyList as NE
9
10
11+import qualified Build
10import qualified Deps.Bump as Bump
12import qualified Deps.Bump as Bump
11import qualified Deps.Diff as Diff
13import qualified Deps.Diff as Diff
12import qualified Deps.Registry as Registry
14import qualified Deps.Registry as Registry
15+import qualified Elm.Details as Details
16+import qualified Elm.Docs as Docs
13import qualified Elm.Magnitude as M
17import qualified Elm.Magnitude as M
14import qualified Elm.Outline as Outline
18import qualified Elm.Outline as Outline
15import qualified Elm.Version as V
19import qualified Elm.Version as V
@@ -43,7 +47,7 @@ data Env =
43 , _cache :: Stuff.PackageCache
47 , _cache :: Stuff.PackageCache
44 , _manager :: Http.Manager
48 , _manager :: Http.Manager
45 , _registry :: Registry.Registry
49 , _registry :: Registry.Registry
46− , _outline :: Outline.Outline
50+ , _outline :: Outline.PkgOutline
47 }
51 }
48
52
49
53
@@ -58,13 +62,13 @@ getEnv =
58 do cache <- Task.io $ Stuff.getPackageCache
62 do cache <- Task.io $ Stuff.getPackageCache
59 manager <- Task.io $ Http.getManager
63 manager <- Task.io $ Http.getManager
60 registry <- Task.eio Exit.BumpMustHaveLatestRegistry $ Registry.latest manager cache
64 registry <- Task.eio Exit.BumpMustHaveLatestRegistry $ Registry.latest manager cache
61− outlineResult <- Task.io $ Outline.read root
65+ outline <- Task.eio Exit.BumpBadOutline $ Outline.read root
62− case outlineResult of
66+ case outline of
63− Right outline ->
67+ Outline.App _ ->
64− return $ Env root cache manager registry outline
68+ Task.throw Exit.BumpApplication
65
69
66− Left problem ->
70+ Outline.Pkg pkgOutline ->
67− Task.throw $ Exit.BumpBadOutline problem
71+ return $ Env root cache manager registry pkgOutline
68
72
69
73
70
74
@@ -72,26 +76,21 @@ getEnv =
72
76
73
77
74bump :: Env -> Task.Task Exit.Bump ()
78bump :: Env -> Task.Task Exit.Bump ()
75−bump env@(Env root _ _ registry outline) =
79+bump env@(Env root _ _ registry outline@(Outline.PkgOutline pkg _ _ vsn _ _ _ _)) =
76− case outline of
77− Outline.App _ ->
78− Task.throw Exit.BumpApplication
79−
80− Outline.Pkg pkgOutline@(Outline.PkgOutline pkg _ _ vsn _ _ _ _) ->
81− case Registry.getVersions pkg registry of
80+ case Registry.getVersions pkg registry of
82− Just knownVersions ->
81+ Just knownVersions ->
83− let
82+ let
84− bumpableVersions =
83+ bumpableVersions =
85− map (\(old, _, _) -> old) (Bump.getPossibilities knownVersions)
84+ map (\(old, _, _) -> old) (Bump.getPossibilities knownVersions)
86− in
85+ in
87− if elem vsn bumpableVersions
86+ if elem vsn bumpableVersions
88− then suggestVersion env pkgOutline
87+ then suggestVersion env
89− else
88+ else
90− Task.throw $ Exit.BumpUnexpectedVersion vsn $
89+ Task.throw $ Exit.BumpUnexpectedVersion vsn $
91− map head (List.group (List.sort bumpableVersions))
90+ map head (List.group (List.sort bumpableVersions))
92
91
93− Nothing ->
92+ Nothing ->
94− Task.io $ checkNewPackage root pkgOutline
93+ Task.io $ checkNewPackage root outline
95
94
96
95
97
96
@@ -115,10 +114,10 @@ checkNewPackage root outline@(Outline.PkgOutline _ _ _ version _ _ _ _) =
115-- SUGGEST VERSION
114-- SUGGEST VERSION
116
115
117
116
118−suggestVersion :: Env -> Outline.PkgOutline -> Task.Task Exit.Bump ()
117+suggestVersion :: Env -> Task.Task Exit.Bump ()
119−suggestVersion (Env root cache manager _ _) outline@(Outline.PkgOutline pkg _ _ vsn _ _ _ _) =
118+suggestVersion (Env root cache manager _ outline@(Outline.PkgOutline pkg _ _ vsn _ _ _ _)) =
120 do oldDocs <- Task.eio (Exit.BumpCannotFindDocs pkg vsn) (Diff.getDocs cache manager pkg vsn)
119 do oldDocs <- Task.eio (Exit.BumpCannotFindDocs pkg vsn) (Diff.getDocs cache manager pkg vsn)
121− newDocs <- error "TODO Outline.generateDocs summary"
120+ newDocs <- generateDocs root outline
122 let changes = Diff.diff oldDocs newDocs
121 let changes = Diff.diff oldDocs newDocs
123 let newVersion = Diff.bump changes vsn
122 let newVersion = Diff.bump changes vsn
124 Task.io $ changeVersion root outline newVersion $
123 Task.io $ changeVersion root outline newVersion $
@@ -133,6 +132,20 @@ suggestVersion (Env root cache manager _ _) outline@(Outline.PkgOutline pkg _ _
133 <> "Should I perform the update (" <> old <> " => " <> new <> ") in elm.json? [Y/n] "
132 <> "Should I perform the update (" <> old <> " => " <> new <> ") in elm.json? [Y/n] "
134
133
135
134
135+generateDocs :: FilePath -> Outline.PkgOutline -> Task.Task Exit.Bump Docs.Documentation
136+generateDocs root (Outline.PkgOutline _ _ _ _ exposed _ _ _) =
137+ do details <-
138+ Task.eio Exit.BumpBadDetails $ Details.load Reporting.silent root
139+
140+ case Outline.flattenExposed exposed of
141+ [] ->
142+ Task.throw $ Exit.BumpNoExposed
143+
144+ e:es ->
145+ Task.eio Exit.BumpBadBuild $
146+ Build.fromExposed Reporting.silent root details Build.KeepDocs (NE.List e es)
147+
148+
136
149
137-- CHANGE VERSION
150-- CHANGE VERSION
138
151