mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-05-20 00:22:51 -06:00
move gfLibraryPath and gfGrammarPath to UseIO. Now they are accessible and there is only one place to change if you want to use different envVar
This commit is contained in:
@@ -60,9 +60,6 @@ import Control.Monad
|
|||||||
import System.Directory
|
import System.Directory
|
||||||
import System.FilePath
|
import System.FilePath
|
||||||
|
|
||||||
-- | environment variable for grammar search path
|
|
||||||
gfGrammarPathVar = "GF_GRAMMAR_PATH"
|
|
||||||
|
|
||||||
-- | in batch mode: write code in a file
|
-- | in batch mode: write code in a file
|
||||||
batchCompile f = liftM fst $ compileModule defOpts emptyShellState f
|
batchCompile f = liftM fst $ compileModule defOpts emptyShellState f
|
||||||
where
|
where
|
||||||
@@ -115,7 +112,7 @@ compileModule opts1 st0 file = do
|
|||||||
let ps1 = if (useFileOpt && not useLineOpt)
|
let ps1 = if (useFileOpt && not useLineOpt)
|
||||||
then (ps0 ++ map (combine fpath) ps0)
|
then (ps0 ++ map (combine fpath) ps0)
|
||||||
else ps0
|
else ps0
|
||||||
ps <- ioeIO $ extendPathEnv gfLibraryPath gfGrammarPathVar ps1
|
ps <- ioeIO $ extendPathEnv ps1
|
||||||
let ioeIOIf = if oElem beVerbose opts then ioeIO else (const (return ()))
|
let ioeIOIf = if oElem beVerbose opts then ioeIO else (const (return ()))
|
||||||
ioeIOIf $ putStrLn $ "module search path:" +++ show ps ----
|
ioeIOIf $ putStrLn $ "module search path:" +++ show ps ----
|
||||||
let st = st0 --- if useFileOpt then emptyShellState else st0
|
let st = st0 --- if useFileOpt then emptyShellState else st0
|
||||||
@@ -396,7 +393,7 @@ getGFEFiles opts1 file = useIOE [] $ do
|
|||||||
let ps1 = if (useFileOpt && not useLineOpt)
|
let ps1 = if (useFileOpt && not useLineOpt)
|
||||||
then (map (combine fpath) ps0)
|
then (map (combine fpath) ps0)
|
||||||
else ps0
|
else ps0
|
||||||
ps <- ioeIO $ extendPathEnv gfLibraryPath gfGrammarPathVar ps1
|
ps <- ioeIO $ extendPathEnv ps1
|
||||||
let file' = if useFileOpt then takeFileName file else file -- to find file itself
|
let file' = if useFileOpt then takeFileName file else file -- to find file itself
|
||||||
files <- getAllFiles opts ps [] file'
|
files <- getAllFiles opts ps [] file'
|
||||||
efiles <- ioeIO $ filterM doesFileExist [replaceExtension f "gfe" | f <- files]
|
efiles <- ioeIO $ filterM doesFileExist [replaceExtension f "gfe" | f <- files]
|
||||||
|
|||||||
@@ -48,9 +48,6 @@ prMod :: SourceModule -> String
|
|||||||
prMod = compactPrint . prModule
|
prMod = compactPrint . prModule
|
||||||
|
|
||||||
|
|
||||||
-- | environment variable for grammar search path
|
|
||||||
gfGrammarPathVar = "GF_GRAMMAR_PATH"
|
|
||||||
|
|
||||||
-- | the environment
|
-- | the environment
|
||||||
type CompileEnv = (Int,SourceGrammar)
|
type CompileEnv = (Int,SourceGrammar)
|
||||||
|
|
||||||
@@ -71,7 +68,7 @@ compileModule opts1 env file = do
|
|||||||
let ps1 = if (useFileOpt && not useLineOpt)
|
let ps1 = if (useFileOpt && not useLineOpt)
|
||||||
then (ps0 ++ map (combine fpath) ps0)
|
then (ps0 ++ map (combine fpath) ps0)
|
||||||
else ps0
|
else ps0
|
||||||
ps <- ioeIO $ extendPathEnv gfLibraryPath gfGrammarPathVar ps1
|
ps <- ioeIO $ extendPathEnv ps1
|
||||||
let ioeIOIf = if oElem beVerbose opts then ioeIO else (const (return ()))
|
let ioeIOIf = if oElem beVerbose opts then ioeIO else (const (return ()))
|
||||||
ioeIOIf $ putStrLn $ "module search path:" +++ show ps ----
|
ioeIOIf $ putStrLn $ "module search path:" +++ show ps ----
|
||||||
let sgr = snd env
|
let sgr = snd env
|
||||||
|
|||||||
@@ -44,9 +44,6 @@ intermOut opts opt s =
|
|||||||
prMod :: SourceModule -> String
|
prMod :: SourceModule -> String
|
||||||
prMod = prModule
|
prMod = prModule
|
||||||
|
|
||||||
-- | environment variable for grammar search path
|
|
||||||
gfGrammarPathVar = "GF_GRAMMAR_PATH"
|
|
||||||
|
|
||||||
-- | the environment
|
-- | the environment
|
||||||
type CompileEnv = (Int,GF)
|
type CompileEnv = (Int,GF)
|
||||||
|
|
||||||
@@ -67,7 +64,7 @@ compileModule opts1 env file = do
|
|||||||
let ps1 = if (useFileOpt && not useLineOpt)
|
let ps1 = if (useFileOpt && not useLineOpt)
|
||||||
then (ps0 ++ map (combine fpath) ps0)
|
then (ps0 ++ map (combine fpath) ps0)
|
||||||
else ps0
|
else ps0
|
||||||
ps <- ioeIO $ extendPathEnv gfLibraryPath gfGrammarPathVar ps1
|
ps <- ioeIO $ extendPathEnv ps1
|
||||||
let ioeIOIf = if oElem beVerbose opts then ioeIO else (const (return ()))
|
let ioeIOIf = if oElem beVerbose opts then ioeIO else (const (return ()))
|
||||||
ioeIOIf $ putStrLn $ "module search path:" +++ show ps ----
|
ioeIOIf $ putStrLn $ "module search path:" +++ show ps ----
|
||||||
let sgr = snd env
|
let sgr = snd env
|
||||||
|
|||||||
@@ -122,10 +122,13 @@ doesFileExistPath paths file = do
|
|||||||
mpfile <- ioeIO $ getFilePathMsg "" paths file
|
mpfile <- ioeIO $ getFilePathMsg "" paths file
|
||||||
return $ maybe False (const True) mpfile
|
return $ maybe False (const True) mpfile
|
||||||
|
|
||||||
|
gfLibraryPath = "GF_LIB_PATH"
|
||||||
|
gfGrammarPathVar = "GF_GRAMMAR_PATH"
|
||||||
|
|
||||||
getLibraryPath :: IO FilePath
|
getLibraryPath :: IO FilePath
|
||||||
getLibraryPath =
|
getLibraryPath =
|
||||||
catch
|
catch
|
||||||
(getEnv "GF_LIB_PATH")
|
(getEnv gfLibraryPath)
|
||||||
#ifdef mingw32_HOST_OS
|
#ifdef mingw32_HOST_OS
|
||||||
(\_ -> do exepath <- getModuleFileName nullPtr
|
(\_ -> do exepath <- getModuleFileName nullPtr
|
||||||
let (path,_) = splitFileName exepath
|
let (path,_) = splitFileName exepath
|
||||||
@@ -134,23 +137,26 @@ getLibraryPath =
|
|||||||
(const (return libdir))
|
(const (return libdir))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-- | first var is lib prefix, second is like class path
|
-- | extends the search path with the
|
||||||
-- | path in environment variable has lower priority
|
-- 'gfLibraryPath' and 'gfGrammarPathVar'
|
||||||
extendPathEnv :: String -> String -> [FilePath] -> IO [FilePath]
|
-- environment variables. Returns only existing paths.
|
||||||
extendPathEnv lib var ps = do
|
extendPathEnv :: [FilePath] -> IO [FilePath]
|
||||||
|
extendPathEnv ps = do
|
||||||
b <- getLibraryPath -- e.g. GF_LIB_PATH
|
b <- getLibraryPath -- e.g. GF_LIB_PATH
|
||||||
s <- catch (getEnv var) (const (return "")) -- e.g. GF_GRAMMAR_PATH
|
s <- catch (getEnv gfGrammarPathVar) (const (return "")) -- e.g. GF_GRAMMAR_PATH
|
||||||
let ss = ps ++ splitSearchPath s
|
let ss = ps ++ splitSearchPath s
|
||||||
liftM concat $ mapM allSubdirs $ ss ++ [b </> s | s <- ss ++ ["prelude"]]
|
liftM concat $ mapM allSubdirs $ ss ++ [b </> s | s <- ss ++ ["prelude"]]
|
||||||
where
|
where
|
||||||
allSubdirs :: FilePath -> IO [FilePath]
|
allSubdirs :: FilePath -> IO [FilePath]
|
||||||
allSubdirs [] = return [[]]
|
allSubdirs [] = return [[]]
|
||||||
allSubdirs p = case last p of
|
allSubdirs p = case last p of
|
||||||
'*' -> do
|
'*' -> do let path = init p
|
||||||
let path = init p
|
fs <- getSubdirs path
|
||||||
fs <- getSubdirs path
|
return [path </> f | f <- fs]
|
||||||
return [path </> f | f <- fs]
|
_ -> do exists <- doesDirectoryExist p
|
||||||
_ -> return [p]
|
if exists
|
||||||
|
then return [p]
|
||||||
|
else return []
|
||||||
|
|
||||||
getSubdirs :: FilePath -> IO [FilePath]
|
getSubdirs :: FilePath -> IO [FilePath]
|
||||||
getSubdirs dir = do
|
getSubdirs dir = do
|
||||||
@@ -278,8 +284,6 @@ putPointEgen cond opts msg act = do
|
|||||||
putPointEVerb :: Options -> String -> IOE a -> IOE a
|
putPointEVerb :: Options -> String -> IOE a -> IOE a
|
||||||
putPointEVerb opts = putPointE (addOption beVerbose opts)
|
putPointEVerb opts = putPointE (addOption beVerbose opts)
|
||||||
|
|
||||||
gfLibraryPath = "GF_LIB_PATH"
|
|
||||||
|
|
||||||
-- ((do {s <- readFile f; return (return s)}) )
|
-- ((do {s <- readFile f; return (return s)}) )
|
||||||
readFileIOE :: FilePath -> IOE BS.ByteString
|
readFileIOE :: FilePath -> IOE BS.ByteString
|
||||||
readFileIOE f = ioe $ catch (BS.readFile f >>= return . return)
|
readFileIOE f = ioe $ catch (BS.readFile f >>= return . return)
|
||||||
|
|||||||
@@ -126,10 +126,15 @@ doesFileExistPath paths file = do
|
|||||||
mpfile <- ioeIO $ getFilePathMsg "" paths file
|
mpfile <- ioeIO $ getFilePathMsg "" paths file
|
||||||
return $ maybe False (const True) mpfile
|
return $ maybe False (const True) mpfile
|
||||||
|
|
||||||
|
gfLibraryPath = "GF_LIB_PATH"
|
||||||
|
|
||||||
|
-- | environment variable for grammar search path
|
||||||
|
gfGrammarPathVar = "GF_GRAMMAR_PATH"
|
||||||
|
|
||||||
getLibraryPath :: IO FilePath
|
getLibraryPath :: IO FilePath
|
||||||
getLibraryPath =
|
getLibraryPath =
|
||||||
catch
|
catch
|
||||||
(getEnv "GF_LIB_PATH")
|
(getEnv gfLibraryPath)
|
||||||
#ifdef mingw32_HOST_OS
|
#ifdef mingw32_HOST_OS
|
||||||
(\_ -> do exepath <- getModuleFileName nullPtr
|
(\_ -> do exepath <- getModuleFileName nullPtr
|
||||||
let (path,_) = splitFileName exepath
|
let (path,_) = splitFileName exepath
|
||||||
@@ -138,23 +143,26 @@ getLibraryPath =
|
|||||||
(const (return libdir))
|
(const (return libdir))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-- | first var is lib prefix, second is like class path
|
-- | extends the search path with the
|
||||||
-- | path in environment variable has lower priority
|
-- 'gfLibraryPath' and 'gfGrammarPathVar'
|
||||||
extendPathEnv :: String -> String -> [FilePath] -> IO [FilePath]
|
-- environment variables. Returns only existing paths.
|
||||||
extendPathEnv lib var ps = do
|
extendPathEnv :: [FilePath] -> IO [FilePath]
|
||||||
|
extendPathEnv ps = do
|
||||||
b <- getLibraryPath -- e.g. GF_LIB_PATH
|
b <- getLibraryPath -- e.g. GF_LIB_PATH
|
||||||
s <- catch (getEnv var) (const (return "")) -- e.g. GF_GRAMMAR_PATH
|
s <- catch (getEnv gfGrammarPathVar) (const (return "")) -- e.g. GF_GRAMMAR_PATH
|
||||||
let ss = ps ++ splitSearchPath s
|
let ss = ps ++ splitSearchPath s
|
||||||
liftM concat $ mapM allSubdirs $ ss ++ [b </> s | s <- ss ++ ["prelude"]]
|
liftM concat $ mapM allSubdirs $ ss ++ [b </> s | s <- ss ++ ["prelude"]]
|
||||||
where
|
where
|
||||||
allSubdirs :: FilePath -> IO [FilePath]
|
allSubdirs :: FilePath -> IO [FilePath]
|
||||||
allSubdirs [] = return [[]]
|
allSubdirs [] = return [[]]
|
||||||
allSubdirs p = case last p of
|
allSubdirs p = case last p of
|
||||||
'*' -> do
|
'*' -> do let path = init p
|
||||||
let path = init p
|
fs <- getSubdirs path
|
||||||
fs <- getSubdirs path
|
return [path </> f | f <- fs]
|
||||||
return [path </> f | f <- fs]
|
_ -> do exists <- doesDirectoryExist p
|
||||||
_ -> return [p]
|
if exists
|
||||||
|
then return [p]
|
||||||
|
else return []
|
||||||
|
|
||||||
getSubdirs :: FilePath -> IO [FilePath]
|
getSubdirs :: FilePath -> IO [FilePath]
|
||||||
getSubdirs dir = do
|
getSubdirs dir = do
|
||||||
@@ -291,8 +299,6 @@ putPointE opts msg act = do
|
|||||||
putPointEVerb :: Options -> String -> IOE a -> IOE a
|
putPointEVerb :: Options -> String -> IOE a -> IOE a
|
||||||
putPointEVerb opts = putPointE (addOption beVerbose opts)
|
putPointEVerb opts = putPointE (addOption beVerbose opts)
|
||||||
|
|
||||||
gfLibraryPath = "GF_LIB_PATH"
|
|
||||||
|
|
||||||
-- ((do {s <- readFile f; return (return s)}) )
|
-- ((do {s <- readFile f; return (return s)}) )
|
||||||
readFileIOE :: FilePath -> IOE (String)
|
readFileIOE :: FilePath -> IOE (String)
|
||||||
readFileIOE f = ioe $ catch (readFileStrict f >>= return . return)
|
readFileIOE f = ioe $ catch (readFileStrict f >>= return . return)
|
||||||
|
|||||||
Reference in New Issue
Block a user