@@ -14,6 +14,7 @@ import qualified Data.Map.Lazy as M
1414import Data.Maybe (fromJust )
1515import qualified Data.Set as S
1616import qualified Data.Time as Time
17+ import qualified Data.Text as Text
1718import qualified Language.PureScript as P
1819import Language.PureScript.Make.Cache (CacheInfo (.. ), normaliseForCache )
1920import qualified Language.PureScript.CST as CST
@@ -51,7 +52,10 @@ rebuildFile
5152 -- ^ A runner for the second build with open exports
5253 -> m Success
5354rebuildFile file actualFile codegenTargets runOpenBuild = do
54- (fp, input) <- ideReadFile file
55+ (fp, input) <-
56+ case List. stripPrefix " data:" file of
57+ Just source -> pure (" " , Text. pack source)
58+ _ -> ideReadFile file
5559 let fp' = fromMaybe fp actualFile
5660 (pwarnings, m) <- case sequence $ CST. parseFromFile fp' input of
5761 Left parseError ->
@@ -65,13 +69,16 @@ rebuildFile file actualFile codegenTargets runOpenBuild = do
6569 -- For rebuilding, we want to 'RebuildAlways', but for inferring foreign
6670 -- modules using their file paths, we need to specify the path in the 'Map'.
6771 let filePathMap = M. singleton moduleName (Left P. RebuildAlways )
72+ let pureRebuild = S. null codegenTargets
6873 foreigns <- P. inferForeignModules (M. singleton moduleName (Right file))
6974 let makeEnv = P. buildMakeActions outputDirectory filePathMap foreigns False
75+ & (if pureRebuild then shushCodegen else identity)
76+ & shushProgress
7077 -- Rebuild the single module using the cached externs
7178 (result, warnings) <- logPerf (labelTimespec " Rebuilding Module" ) $
7279 liftIO $ P. runMake (P. defaultOptions { P. optionsCodegenTargets = codegenTargets }) do
73- newExterns <- P. rebuildModule (shushProgress makeEnv) externs m
74- unless ( S. null codegenTargets)
80+ newExterns <- P. rebuildModule makeEnv externs m
81+ unless pureRebuild
7582 $ updateCacheDb codegenTargets outputDirectory file actualFile moduleName
7683 pure newExterns
7784 case result of
0 commit comments