@@ -4,11 +4,10 @@ module Deps.Diff
4 , PackageChanges(..)
4 , PackageChanges(..)
5 , ModuleChanges(..)
5 , ModuleChanges(..)
6 , Changes(..)
6 , Changes(..)
8 , moduleChangeMagnitude
7 , moduleChangeMagnitude
10 , toMagnitude
8 , toMagnitude
@@ -21,10 +20,18 @@ import qualified Data.Name as Name
21import qualified Data.Set as Set
20import qualified Data.Set as Set
22import qualified Data.Utf8 as Utf8
21import qualified Data.Utf8 as Utf8
23+import qualified Deps.Website as Website
24import qualified Elm.Compiler.Type as Type
24import qualified Elm.Compiler.Type as Type
25import qualified Elm.Docs as Docs
25import qualified Elm.Docs as Docs
26+import qualified Elm.Magnitude as M
26import qualified Elm.ModuleName as ModuleName
27import qualified Elm.ModuleName as ModuleName
28+import qualified Elm.Package as Pkg
27import qualified Elm.Version as V
29import qualified Elm.Version as V
32+import qualified Json.Decode as D
33+import qualified Reporting.Exit as Exit
34+import qualified Stuff
@@ -73,7 +80,7 @@ diff :: Docs.Documentation -> Docs.Documentation -> PackageChanges
73diff oldDocs newDocs =
80diff oldDocs newDocs =
75 filterOutPatches chngs =
82 filterOutPatches chngs =
76− Map.filter (\chng -> moduleChangeMagnitude chng /= PATCH) chngs
83+ Map.filter (\chng -> moduleChangeMagnitude chng /= M.PATCH) chngs
78 (Changes added changed removed) =
85 (Changes added changed removed) =
79 getChanges (\_ _ -> False) oldDocs newDocs
86 getChanges (\_ _ -> False) oldDocs newDocs
@@ -298,50 +305,30 @@ categorizeVar name
298-- MAGNITUDE
305-- MAGNITUDE
308−magnitudeToString :: Magnitude -> String
309−magnitudeToString magnitude =
321bump :: PackageChanges -> V.Version -> V.Version
308bump :: PackageChanges -> V.Version -> V.Version
322bump changes version =
309bump changes version =
323 case toMagnitude changes of
310 case toMagnitude changes of
324− PATCH ->
311+ M.PATCH ->
325 V.bumpPatch version
312 V.bumpPatch version
327− MINOR ->
314+ M.MINOR ->
328 V.bumpMinor version
315 V.bumpMinor version
330− MAJOR ->
317+ M.MAJOR ->
331 V.bumpMajor version
318 V.bumpMajor version
334−toMagnitude :: PackageChanges -> Magnitude
321+toMagnitude :: PackageChanges -> M.Magnitude
335toMagnitude (PackageChanges added changed removed) =
322toMagnitude (PackageChanges added changed removed) =
337− addMag = if null added then PATCH else MINOR
324+ addMag = if null added then M.PATCH else M.MINOR
338− removeMag = if null removed then PATCH else MAJOR
325+ removeMag = if null removed then M.PATCH else M.MAJOR
339 changeMags = map moduleChangeMagnitude (Map.elems changed)
326 changeMags = map moduleChangeMagnitude (Map.elems changed)
341 maximum (addMag : removeMag : changeMags)
328 maximum (addMag : removeMag : changeMags)
344−moduleChangeMagnitude :: ModuleChanges -> Magnitude
331+moduleChangeMagnitude :: ModuleChanges -> M.Magnitude
345moduleChangeMagnitude (ModuleChanges unions aliases values binops) =
332moduleChangeMagnitude (ModuleChanges unions aliases values binops) =
347 [ changeMagnitude unions
334 [ changeMagnitude unions
@@ -351,13 +338,43 @@ moduleChangeMagnitude (ModuleChanges unions aliases values binops) =
354−changeMagnitude :: Changes k v -> Magnitude
341+changeMagnitude :: Changes k v -> M.Magnitude
355changeMagnitude (Changes added changed removed) =
342changeMagnitude (Changes added changed removed) =
356 if Map.size removed > 0 || Map.size changed > 0 then
343 if Map.size removed > 0 || Map.size changed > 0 then
359 else if Map.size added > 0 then
346 else if Map.size added > 0 then
357+getDocs :: Stuff.PackageCache -> Http.Manager -> Pkg.Name -> V.Version -> IO (Either Exit.DocsProblem Docs.Documentation)
358+getDocs cache manager name version =
359+ do let path = Stuff.metadata cache name version "docs.json"
360+ exists <- File.exists path
363+ do result <- D.fromFile Docs.decoder path
370+ return $ Left Exit.DP_Cache
372+ do let url = Website.metadata name version "docs.json"
373+ Http.post manager url [] Exit.DP_Http $ \body ->
374+ case D.fromByteString Docs.decoder body of
376+ do File.writeUtf8 path body
380+ return $ Left Exit.DP_Data