on master help sign in
add code for figuring out exactDeps for packages
commit0a1150dcc4a545f83e1e311281a8ef8ece13a3ee authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 1 Jul 2019, 15:54 (7 years ago) parenta537ed8
1 file changed+49−1
terminal/src/Develop/Generate/Index.hs+49−1
terminal/src/Develop/Generate/Index.hs+49−1
@@ -9,13 +9,18 @@ module Develop.Generate.Index
99import Control.Monad (filterM)
1010import qualified Data.ByteString.Builder as B
1111import qualified Data.List as List
12+import qualified Data.Map as Map
1213import qualified System.Directory as Dir
1314import System.FilePath ((</>), splitDirectories, takeExtension)
1415
1516import qualified Develop.Generate.Help as Help
17+import qualified Elm.Details as Details
1618import qualified Elm.Outline as Outline
19+import qualified Elm.Package as Pkg
20+import qualified Elm.Version as V
1721import qualified Json.Encode as E
1822import Json.Encode ((==>))
23+import qualified Reporting
1924import qualified Stuff
2025
2126
@@ -41,6 +46,7 @@ data Flags =
4146 , _files :: [File]
4247 , _readme :: Maybe String
4348 , _outline :: Maybe Outline.Outline
49+ , _exactDeps :: Map.Map Pkg.Name V.Version
4450 }
4551
4652
@@ -63,6 +69,7 @@ getFlags pwd =
6369 files <- getFiles pwd contents
6470 readme <- getReadme pwd
6571 outline <- getOutline
72+ exactDeps <- getExactDeps outline
6673 return $
6774 Flags
6875 { _root = root
@@ -71,6 +78,7 @@ getFlags pwd =
7178 , _files = files
7279 , _readme = readme
7380 , _outline = outline
81+ , _exactDeps = exactDeps
7482 }
7583
7684
@@ -135,11 +143,50 @@ getOutline =
135143
136144
137145
146+-- GET EXACT DEPS
147+
148+
149+-- TODO revamp how `elm reactor` works so that this can go away.
150+-- I am trying to "just get it working again" at this point though.
151+--
152+getExactDeps :: Maybe Outline.Outline -> IO (Map.Map Pkg.Name V.Version)
153+getExactDeps maybeOutline =
154+ case maybeOutline of
155+ Nothing ->
156+ return Map.empty
157+
158+ Just outline ->
159+ case outline of
160+ Outline.App _ ->
161+ return Map.empty
162+
163+ Outline.Pkg _ ->
164+ do maybeRoot <- Stuff.findRoot
165+ case maybeRoot of
166+ Nothing ->
167+ return Map.empty
168+
169+ Just root ->
170+ do result <- Details.load Reporting.silent root
171+ case result of
172+ Left _ ->
173+ return Map.empty
174+
175+ Right (Details.Details _ validOutline _ _ _) ->
176+ case validOutline of
177+ Details.ValidApp _ ->
178+ return Map.empty
179+
180+ Details.ValidPkg _ _ solution ->
181+ return solution
182+
183+
184+
138185-- ENCODE
139186
140187
141188encode :: Flags -> E.Value
142−encode (Flags root pwd dirs files readme outline) =
189+encode (Flags root pwd dirs files readme outline exactDeps) =
143190 E.object
144191 [ "root" ==> encodeFilePath root
145192 , "pwd" ==> E.list encodeFilePath pwd
@@ -147,6 +194,7 @@ encode (Flags root pwd dirs files readme outline) =
147194 , "files" ==> E.list encodeFile files
148195 , "readme" ==> maybe E.null E.chars readme
149196 , "outline" ==> maybe E.null Outline.encode outline
197+ , "exactDeps" ==> E.dict Pkg.toJsonString V.encode exactDeps
150198 ]
151199
152200