on master help sign in
thread BW.Scope around to give lots of time to write large project files
commit8ce703ff8d96dbe9e55194f0ccfdfa6266791d69 authorEvan Czaplicki <evancz@users.noreply.github.com> dateTue 2 Jul 2019, 22:14 (7 years ago) parent71fa816
9 files changed+33−16
terminal/src/Bump.hs+3−1 terminal/src/Develop.hs+3−2 terminal/src/Develop/Generate/Index.hs+3−1 terminal/src/Develop/StaticFiles/Build.hs+4−2 terminal/src/Diff.hs+3−2 terminal/src/Install.hs+3−1 terminal/src/Make.hs+3−1 terminal/src/Publish.hs+6−4 terminal/src/Repl.hs+5−2
terminal/src/Bump.hs+3−1
@@ -8,6 +8,7 @@ module Bump
88import qualified Data.List as List
99import qualified Data.NonEmptyList as NE
1010
11+import qualified BackgroundWriter as BW
1112import qualified Build
1213import qualified Deps.Bump as Bump
1314import qualified Deps.Diff as Diff
@@ -135,7 +136,8 @@ suggestVersion (Env root cache manager _ outline@(Outline.PkgOutline pkg _ _ vsn
135136generateDocs :: FilePath -> Outline.PkgOutline -> Task.Task Exit.Bump Docs.Documentation
136137generateDocs root (Outline.PkgOutline _ _ _ _ exposed _ _ _) =
137138 do details <-
138− Task.eio Exit.BumpBadDetails $ Details.load Reporting.silent root
139+ Task.eio Exit.BumpBadDetails $ BW.withScope $ \scope ->
140+ Details.load Reporting.silent scope root
139141
140142 case Outline.flattenExposed exposed of
141143 [] ->
terminal/src/Develop.hs+3−2
@@ -20,6 +20,7 @@ import Snap.Core hiding (path)
2020import Snap.Http.Server
2121import Snap.Util.FileServe
2222
23+import qualified BackgroundWriter as BW
2324import qualified Build
2425import qualified Elm.Details as Details
2526import qualified Develop.Generate.Help as Help
@@ -156,8 +157,8 @@ compile path =
156157 return $ Left $ Exit.ReactorNoOutline
157158
158159 Just root ->
159− Stuff.withRootLock root $ Task.run $
160− do details <- Task.eio Exit.ReactorBadDetails $ Details.load Reporting.silent root
160+ BW.withScope $ \scope -> Stuff.withRootLock root $ Task.run $
161+ do details <- Task.eio Exit.ReactorBadDetails $ Details.load Reporting.silent scope root
161162 artifacts <- Task.eio Exit.ReactorBadBuild $ Build.fromMains Reporting.silent root details (NE.List path [])
162163 javascript <- Task.mapError Exit.ReactorBadGenerate $ Generate.dev root details artifacts
163164 let (NE.List name _) = Build.getMainNames artifacts
terminal/src/Develop/Generate/Index.hs+3−1
@@ -13,6 +13,7 @@ import qualified Data.Map as Map
1313import qualified System.Directory as Dir
1414import System.FilePath ((</>), splitDirectories, takeExtension)
1515
16+import qualified BackgroundWriter as BW
1617import qualified Develop.Generate.Help as Help
1718import qualified Elm.Details as Details
1819import qualified Elm.Outline as Outline
@@ -167,7 +168,8 @@ getExactDeps maybeOutline =
167168 return Map.empty
168169
169170 Just root ->
170− do result <- Details.load Reporting.silent root
171+ BW.withScope $ \scope ->
172+ do result <- Details.load Reporting.silent scope root
171173 case result of
172174 Left _ ->
173175 return Map.empty
terminal/src/Develop/StaticFiles/Build.hs+4−2
@@ -13,12 +13,13 @@ import qualified Data.NonEmptyList as NE
1313import qualified System.Directory as Dir
1414import System.FilePath ((</>))
1515
16−import qualified Reporting.Task as Task
16+import qualified BackgroundWriter as BW
1717import qualified Build
1818import qualified Elm.Details as Details
1919import qualified Generate
2020import qualified Reporting
2121import qualified Reporting.Exit as Exit
22+import qualified Reporting.Task as Task
2223
2324
2425
@@ -36,10 +37,11 @@ readAsset path =
3637
3738buildReactorFrontEnd :: IO BS.ByteString
3839buildReactorFrontEnd =
40+ BW.withScope $ \scope ->
3941 Dir.withCurrentDirectory "reactor" $
4042 do root <- Dir.getCurrentDirectory
4143 runTaskUnsafe $
42− do details <- Task.eio Exit.ReactorBadDetails $ Details.load Reporting.silent root
44+ do details <- Task.eio Exit.ReactorBadDetails $ Details.load Reporting.silent scope root
4345 artifacts <- Task.eio Exit.ReactorBadBuild $ Build.fromMains Reporting.silent root details mains
4446 javascript <- Task.mapError Exit.ReactorBadGenerate $ Generate.prod root details artifacts
4547 return (LBS.toStrict (B.toLazyByteString javascript))
terminal/src/Diff.hs+3−2
@@ -13,6 +13,7 @@ import qualified Data.Maybe as Maybe
1313import qualified Data.Name as Name
1414import qualified Data.NonEmptyList as NE
1515
16+import qualified BackgroundWriter as BW
1617import qualified Build
1718import Deps.Diff (PackageChanges(..), ModuleChanges(..), Changes(..))
1819import qualified Deps.Diff as DD
@@ -171,8 +172,8 @@ generateDocs (Env maybeRoot _ _ _) =
171172
172173 Just root ->
173174 do details <-
174− Task.eio Exit.DiffBadDetails $
175− Details.load Reporting.silent root
175+ Task.eio Exit.DiffBadDetails $ BW.withScope $ \scope ->
176+ Details.load Reporting.silent scope root
176177
177178 case Details._outline details of
178179 Details.ValidApp _ ->
terminal/src/Install.hs+3−1
@@ -10,6 +10,7 @@ import Data.Map ((!))
1010import qualified Data.Map as Map
1111import qualified Data.Map.Merge.Strict as Map
1212
13+import qualified BackgroundWriter as BW
1314import qualified Deps.Solver as Solver
1415import qualified Deps.Registry as Registry
1516import qualified Elm.Constraint as C
@@ -124,11 +125,12 @@ attemptChanges root env pkg oldOutline toChars changes =
124125attemptChangesHelp :: FilePath -> Solver.Env -> Pkg.Name -> Outline.Outline -> Outline.Outline -> D.Doc -> Task ()
125126attemptChangesHelp root env pkg oldOutline newOutline question =
126127 Task.eio (\_ -> Exit.InstallHasBadDetails pkg (Outline.encode newOutline)) $
128+ BW.withScope $ \scope ->
127129 do approved <- Reporting.ask question
128130 if approved
129131 then
130132 do Outline.write root newOutline
131− result <- Details.verifyInstall root env newOutline
133+ result <- Details.verifyInstall scope root env newOutline
132134 case result of
133135 Left exit ->
134136 do Outline.write root oldOutline
terminal/src/Make.hs+3−1
@@ -17,6 +17,7 @@ import qualified Data.NonEmptyList as NE
1717import qualified System.FilePath as FP
1818
1919import qualified AST.Optimized as Opt
20+import qualified BackgroundWriter as BW
2021import qualified Build
2122import qualified Elm.Details as Details
2223import qualified Elm.ModuleName as ModuleName
@@ -73,9 +74,10 @@ run paths flags@(Flags _ _ _ report _) =
7374
7475runHelp :: FilePath -> [FilePath] -> Reporting.Style -> Flags -> IO (Either Exit.Make ())
7576runHelp root paths style (Flags debug optimize maybeOutput _ maybeDocs) =
77+ BW.withScope $ \scope ->
7678 Stuff.withRootLock root $ Task.run $
7779 do desiredMode <- getMode debug optimize
78− details <- Task.eio Exit.MakeBadDetails (Details.load style root)
80+ details <- Task.eio Exit.MakeBadDetails (Details.load style scope root)
7981 case paths of
8082 [] ->
8183 do exposed <- getExposed details
terminal/src/Publish.hs+6−4
@@ -17,6 +17,7 @@ import qualified System.Info as Info
1717import qualified System.IO as IO
1818import qualified System.Process as Process
1919
20+import qualified BackgroundWriter as BW
2021import qualified Build
2122import qualified Deps.Bump as Bump
2223import qualified Deps.Diff as Diff
@@ -170,10 +171,11 @@ verifyLicense root =
170171
171172verifyBuild :: FilePath -> Task.Task Exit.Publish Docs.Documentation
172173verifyBuild root =
173− reportBuildCheck $ Task.run $
174+ reportBuildCheck $ BW.withScope $ \scope ->
175+ Task.run $
174176 do details@(Details.Details _ outline _ _ _) <-
175177 Task.eio Exit.PublishBadDetails $
176− Details.load Reporting.silent root
178+ Details.load Reporting.silent scope root
177179
178180 exposed <-
179181 case outline of
@@ -293,10 +295,10 @@ withTempDir root callback =
293295
294296verifyZipBuild :: FilePath -> IO (Either Exit.Publish ())
295297verifyZipBuild root =
296− Task.run $
298+ BW.withScope $ \scope -> Task.run $
297299 do details@(Details.Details _ outline _ _ _) <-
298300 Task.eio Exit.PublishZipBadDetails $
299− Details.load Reporting.silent root
301+ Details.load Reporting.silent scope root
300302
301303 exposed <-
302304 case outline of
terminal/src/Repl.hs+5−2
@@ -29,6 +29,7 @@ import qualified System.IO as IO
2929import qualified System.Process as Proc
3030
3131import qualified AST.Source as Src
32+import qualified BackgroundWriter as BW
3233import qualified Build
3334import qualified Elm.Constraint as C
3435import qualified Elm.Details as Details
@@ -377,10 +378,12 @@ data Output
377378
378379attemptEval :: Env -> State -> State -> Output -> IO State
379380attemptEval (Env root interpreter ansi) oldState newState output =
380− do result <- Stuff.withRootLock root $ Task.run $
381+ do result <-
382+ BW.withScope $ \scope ->
383+ Stuff.withRootLock root $ Task.run $
381384 do details <-
382385 Task.eio Exit.ReplBadDetails $
383− Details.load Reporting.silent root
386+ Details.load Reporting.silent scope root
384387
385388 artifacts <-
386389 Task.eio id $