on 577fc17 help sign in
elk/compiler/Build/Utils.hs
44 lines 1.2 kB history raw
1{-# OPTIONS_GHC -W #-}
2module Build.Utils where
4import Control.Monad.Error
5import System.Directory (doesFileExist)
6import System.Environment (getEnv)
7import System.FilePath ((</>), replaceExtension)
8import qualified Build.Flags as Flag
9import qualified Build.Print as Print
10import qualified Paths_Elm as This
12buildPath :: Flag.Flags -> FilePath -> String -> FilePath
13buildPath flags filePath ext =
14 Flag.build_dir flags </> replaceExtension filePath ext
16cachePath :: Flag.Flags -> FilePath -> String -> FilePath
17cachePath flags filePath ext =
18 Flag.cache_dir flags </> replaceExtension filePath ext
20elmo :: Flag.Flags -> FilePath -> FilePath
21elmo flags filePath =
22 cachePath flags filePath "elmo"
24elmi :: Flag.Flags -> FilePath -> FilePath
25elmi flags filePath =
26 cachePath flags filePath "elmi"
28-- |The absolute path to a data file
29getDataFile :: FilePath -> IO FilePath
30getDataFile name = do
31 path <- This.getDataFileName name
32 exists <- doesFileExist path
33 if exists
34 then return path
35 else do
36 env <- getEnv "ELM_HOME"
37 return (env </> name)
39run :: ErrorT String IO a -> IO a
40run command = do
41 either <- runErrorT command
42 case either of
43 Left err -> Print.failure err
44 Right result -> return result