prepareAutogen skips its work if a cabal file does not exist.

This commit is contained in:
Kazu Yamamoto 2014-09-23 15:14:46 +09:00
parent 9ed4aa8fdf
commit 1545f05d87
2 changed files with 8 additions and 6 deletions

View File

@ -28,6 +28,7 @@ import Data.List (intercalate)
import Data.List.Split (splitOn)
import Data.Version (showVersion)
import Language.Haskell.GhcMod
import Language.Haskell.GhcMod.Internal (cradle)
import Paths_ghc_mod
import System.Console.GetOpt
import System.Directory (setCurrentDirectory)
@ -87,7 +88,7 @@ run opt ref = flip E.catches handlers $ do
let rootdir = cradleRootDir cradle0
-- c = cradle0 { cradleCurrentDir = rootdir } TODO: ?????
setCurrentDirectory rootdir
prepareAutogen
prepareAutogen cradle0
-- Asynchronous db loading starts here.
symdbreq <- newSymDbReq opt
(res, _) <- runGhcModT opt $ getCurrentWorld >>= loop symdbreq ref
@ -129,7 +130,7 @@ loop symdbreq ref world = do
when changed $ do
liftIO $ ungetCommand ref cmdArg
E.throw Restart
liftIO $ prepareAutogen
cradle >>= liftIO . prepareAutogen
let (cmd,arg') = break (== ' ') cmdArg
arg = dropWhile (== ' ') arg'
(ret,ok) <- case cmd of

View File

@ -21,15 +21,16 @@ import Control.Applicative ((<$>))
import Control.Concurrent (threadDelay)
import Control.Concurrent.Async (Async, async, wait)
import Control.Exception (Exception)
import Control.Monad (unless)
import Control.Monad (unless, when)
import CoreMonad (liftIO)
import Data.IORef (IORef, newIORef, readIORef, writeIORef)
import Data.List (isPrefixOf)
import Data.Maybe (isJust)
import Data.Time (UTCTime)
import Data.Typeable (Typeable)
import System.Directory (getModificationTime, doesDirectoryExist, getDirectoryContents)
import System.Process
import System.IO (openBinaryFile, IOMode(..))
import System.Process
import Language.Haskell.GhcMod
import Language.Haskell.GhcMod.Internal
@ -168,8 +169,8 @@ watch n hdl = do
threadDelay 100000
watch (n - 1) hdl
prepareAutogen :: IO ()
prepareAutogen = do
prepareAutogen :: Cradle -> IO ()
prepareAutogen crdl = when (isJust $ cradleCabalFile crdl) $ do
prepared <- isAutogenPrepared
unless prepared $ do
hdl <- build