1{-# OPTIONS_GHC -Wall #-}
8import Prelude hiding (read)
9import qualified Data.Map as Map
12import Elm.Package (Name, Version)
14import qualified Deps.Verify as Verify
15import Elm.Project.Json (Project(..), PkgInfo(..))
16import qualified Elm.Project.Json as Project
17import qualified Elm.Project.Constraint as Con
18import qualified Elm.Project.Summary as Summary
19import qualified File.IO as IO
20import qualified Reporting.Task as Task
21import qualified Stuff.Paths as Path
28verify :: FilePath -> Project -> Task.Task Summary.Summary
32 [ IO.exists Path.solution
33 , IO.exists Path.summary
34 , checkSolution project
38 then read root project
39 else rebuildCache root project
42rebuildCache :: FilePath -> Project -> Task.Task Summary.Summary
43rebuildCache root project =
44 do IO.remove Path.solution
45 IO.remove Path.summary
47 (solution, summary) <- Verify.verify root project
49 IO.writeBinary Path.solution solution
58read :: FilePath -> Project -> Task.Task Summary.Summary
60 do (exposed, ifaces, graph) <- IO.readBinary Path.summary
61 return (Summary.Summary root project exposed ifaces graph)
64write :: Summary.Summary -> Task.Task ()
65write (Summary.Summary _ _ exposed ifaces graph) =
66 IO.writeBinary Path.summary ( exposed, ifaces, graph )
73checkSolution :: Project -> Task.Task Bool
74checkSolution project =
75 checkSolutionHelp project <$> IO.readBinary Path.solution
78checkSolutionHelp :: Project -> Map Name Version -> Bool
79checkSolutionHelp project solution =
82 solution == Project.appSolution info
85 allGood (_pkg_test_deps info) solution
86 && allGood (_pkg_deps info) solution
89allGood :: Map Name Con.Constraint -> Map Name Version -> Bool
93 Map.intersectionWith Con.satisfies cons vsns
95 Map.size cons == Map.size bools
96 && Map.foldr (&&) True bools
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list