git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #603 from purescript/bindists
30c1cd5Phil Freeman
src/Language/PureScript.hs+24−3
@@ -41,14 +41,17 @@ import qualified Paths_purescript as Paths
41import Data.List (find, sortBy, groupBy, intercalate)
41import Data.List (find, sortBy, groupBy, intercalate)
42import Data.Time.Clock
42import Data.Time.Clock
43import Data.Function (on)
43import Data.Function (on)
44−import Data.Maybe (fromMaybe)
44+import Data.Maybe (listToMaybe, fromMaybe)
45import Control.Monad.Error
45import Control.Monad.Error
46import Control.Monad.State.Lazy
46import Control.Monad.State.Lazy
47import Control.Arrow ((&&&))
47import Control.Arrow ((&&&))
48import Control.Applicative
48import Control.Applicative
49import qualified Data.Map as M
49import qualified Data.Map as M
50import qualified Data.Set as S
50import qualified Data.Set as S
51+
51−import System.FilePath (pathSeparator)
52+import System.FilePath ((</>), pathSeparator)
53+import System.Directory (getHomeDirectory, doesFileExist)
54+import System.Environment.XDG.BaseDir (getUserConfigDir)
52
55
53-- |
56-- |
54-- Compile a collection of modules
57-- Compile a collection of modules
@@ -268,4 +271,22 @@ importPrelude :: Module -> Module
268importPrelude = addDefaultImport (ModuleName [ProperName C.prelude])
271importPrelude = addDefaultImport (ModuleName [ProperName C.prelude])
269
272
270preludeFilename :: IO FilePath
273preludeFilename :: IO FilePath
274+preludeFilename = fromMaybe missingPrelude . listToMaybe <$> do
275+ fs <- sequence [xdsPrelude, homePrelude, cabalPrelude]
276+ filterM doesFileExist fs
277+ where
278+ missingPrelude :: FilePath
279+ missingPrelude = error "No Prelude found in user home, XDS user config directory or cabal path."
280+
281+ xdsPrelude :: IO FilePath
282+ xdsPrelude = do
283+ configDir <- getUserConfigDir "purescript"
284+ return $ configDir </> "prelude" </> "prelude.purs"
285+
286+ homePrelude :: IO FilePath
287+ homePrelude = do
288+ homeDir <- getHomeDirectory
289+ return $ homeDir </> ".purescript" </> "prelude" </> "prelude.purs"
290+
291+ cabalPrelude :: IO FilePath
271−preludeFilename = Paths.getDataFileName "prelude/prelude.purs"
292+ cabalPrelude = Paths.getDataFileName "prelude/prelude.purs"