git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Fix #490
commit8bf954a2817890e4ec70febfdc72e9765e0e4a91 authorPhil Freeman <paf31@cantab.net> dateSat 20 Sep 2014, 12:08 (12 years ago) parentcaa1dc6
1 file changed+24−3
src/Language/PureScript.hs+24−3
src/Language/PureScript.hs+24−3
@@ -41,14 +41,17 @@ import qualified Paths_purescript as Paths
4141import Data.List (find, sortBy, groupBy, intercalate)
4242import Data.Time.Clock
4343import Data.Function (on)
44−import Data.Maybe (fromMaybe)
44+import Data.Maybe (listToMaybe, fromMaybe)
4545import Control.Monad.Error
4646import Control.Monad.State.Lazy
4747import Control.Arrow ((&&&))
4848import Control.Applicative
4949import qualified Data.Map as M
5050import qualified Data.Set as S
51−import System.FilePath (pathSeparator)
51+
52+import System.FilePath ((</>), pathSeparator)
53+import System.Directory (getHomeDirectory, doesFileExist)
54+import System.Environment.XDG.BaseDir (getUserConfigDir)
5255
5356-- |
5457-- Compile a collection of modules
@@ -268,4 +271,22 @@ importPrelude :: Module -> Module
268271importPrelude = addDefaultImport (ModuleName [ProperName C.prelude])
269272
270273preludeFilename :: IO FilePath
271−preludeFilename = Paths.getDataFileName "prelude/prelude.purs"
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
292+ cabalPrelude = Paths.getDataFileName "prelude/prelude.purs"