git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Use real filePathMap
commit3ee0fa556be0f3db3737ba16e49edc51c56a5ced authorGary Burgess <gary.burgess@gmail.com> dateFri 8 May 2015, 11:07 (11 years ago) parent46dd0a6
1 file changed+15−17
psc-make/Main.hs+15−17
psc-make/Main.hs+15−17
@@ -12,7 +12,10 @@
1212--
1313-----------------------------------------------------------------------------
1414
15−{-# LANGUAGE DataKinds, GeneralizedNewtypeDeriving, TupleSections, RecordWildCards #-}
15+{-# LANGUAGE DataKinds #-}
16+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
17+{-# LANGUAGE TupleSections #-}
18+{-# LANGUAGE RecordWildCards #-}
1619
1720module Main where
1821
@@ -91,11 +94,10 @@ compile :: PSCMakeOptions -> IO ()
9194compile (PSCMakeOptions input outputDir opts usePrefix) = do
9295 modules <- P.parseModulesFromFiles (either (const "") id) <$> readInput (InputOptions (P.optionsNoPrelude opts) input)
9396 case modules of
94− Left err -> do
95− print err
96− exitFailure
97+ Left err -> print err >> exitFailure
9798 Right ms -> do
98− e <- runMake opts $ P.make getInputTimestamp getOutputTimestamp readExterns codegen ms
99+ let filePathMap = M.fromList $ map (\(fp, P.Module _ mn _ _) -> (mn, fp)) ms
100+ e <- runMake opts $ P.make (getInputTimestamp filePathMap) getOutputTimestamp readExterns codegen ms
99101 case e of
100102 Left errs -> do
101103 putStrLn (P.prettyPrintMultipleErrors (P.optionsVerboseErrors opts) errs)
@@ -105,16 +107,11 @@ compile (PSCMakeOptions input outputDir opts usePrefix) = do
105107 putStrLn (P.prettyPrintMultipleWarnings (P.optionsVerboseErrors opts) warnings)
106108 exitSuccess
107109 where
108− prefix = if usePrefix
109− then ["Generated by psc-make version " ++ showVersion Paths.version]
110− else []
111110
112− filePathMap = M.empty -- M.fromList (map (\(fp, Module _ mn _ _) -> (mn, fp)) ms)
113−
114− getInputTimestamp :: P.ModuleName -> Make (Either P.RebuildPolicy (Maybe UTCTime))
115− getInputTimestamp mn = do
116− let inputFile = fromMaybe (error "Module has no filename in 'make'") $ M.lookup mn filePathMap
117− traverseEither P.getTimestamp inputFile
111+ getInputTimestamp :: M.Map P.ModuleName (Either P.RebuildPolicy String) -> P.ModuleName -> Make (Either P.RebuildPolicy (Maybe UTCTime))
112+ getInputTimestamp filePathMap mn = do
113+ let path = fromMaybe (error "Module has no filename in 'make'") $ M.lookup mn filePathMap
114+ traverseEither P.getTimestamp path
118115
119116 getOutputTimestamp :: P.ModuleName -> Make (Maybe UTCTime)
120117 getOutputTimestamp mn = do
@@ -129,12 +126,13 @@ compile (PSCMakeOptions input outputDir opts usePrefix) = do
129126 (path, ) <$> P.readTextFile path
130127
131128 codegen :: CoreFn.Module CoreFn.Ann -> String -> P.Environment -> Integer -> Make ()
132− codegen m exts env nextVar = do
129+ codegen m exts _ nextVar = do
130+ pjs <- P.evalSupplyT nextVar $ P.prettyPrintJS <$> J.moduleToJs m Nothing
133131 let filePath = P.runModuleName $ CoreFn.moduleName m
134132 jsFile = outputDir </> filePath </> "index.js"
135133 externsFile = outputDir </> filePath </> "externs.purs"
136− pjs <- P.evalSupplyT nextVar $ P.prettyPrintJS <$> J.moduleToJs m Nothing
137− let js = unlines $ map ("// " ++) prefix ++ [pjs]
134+ prefix = ["Generated by psc-make version " ++ showVersion Paths.version | usePrefix]
135+ js = unlines $ map ("// " ++) prefix ++ [pjs]
138136 P.writeTextFile jsFile js
139137 P.writeTextFile externsFile exts
140138