diff options
author | nicolas.pouillard <nicolas.pouillard@gmail.com> | 2008-01-05 23:55:00 +0100 |
---|---|---|
committer | nicolas.pouillard <nicolas.pouillard@gmail.com> | 2008-01-05 23:55:00 +0100 |
commit | b57529f3449a3ed699c9d1c9c18f3224bd185f4c (patch) | |
tree | 8c73a33c64758e2d1705335e48d8d646bab34363 | |
parent | c6eae4cb51073cfec1fde1bd6bd8f28a131a2ab4 (diff) | |
download | metatile-b57529f3449a3ed699c9d1c9c18f3224bd185f4c.tar metatile-b57529f3449a3ed699c9d1c9c18f3224bd185f4c.zip |
The recompile function now returns a boolean status instead of ().
darcs-hash:20080105225500-94725-1c05ae81351eaadb4f736e0d665f325618d76dbe
-rw-r--r-- | Main.hs | 4 | ||||
-rw-r--r-- | XMonad/Core.hs | 9 |
2 files changed, 9 insertions, 4 deletions
@@ -31,8 +31,8 @@ main = do case args of [] -> launch ["--resume", _] -> launch - ["--recompile"] -> recompile False - ["--recompile-force"] -> recompile True + ["--recompile"] -> recompile False >> return () + ["--recompile-force"] -> recompile True >> return () ["--version"] -> putStrLn "xmonad 0.5" _ -> fail "unrecognized flags" diff --git a/XMonad/Core.hs b/XMonad/Core.hs index 9252b05..56afe1b 100644 --- a/XMonad/Core.hs +++ b/XMonad/Core.hs @@ -348,7 +348,9 @@ getXMonadDir = io $ getAppUserDataDirectory "xmonad" -- GHC indicates failure with a non-zero exit code, an xmessage containing -- GHC's is spawned. -- -recompile :: MonadIO m => Bool -> m () +-- False is returned if there is compilation errors. +-- +recompile :: MonadIO m => Bool -> m Bool recompile force = io $ do dir <- getXMonadDir let binn = "xmonad-"++arch++"-"++os @@ -358,7 +360,8 @@ recompile force = io $ do src = base ++ ".hs" srcT <- getModTime src binT <- getModTime bin - when (force || srcT > binT) $ do + if (force || srcT > binT) + then do status <- bracket (openFile err WriteMode) hClose $ \h -> do waitForProcess =<< runProcess "ghc" ["--make", "xmonad.hs", "-i", "-no-recomp", "-v0", "-o",binn] (Just dir) Nothing Nothing Nothing (Just h) @@ -370,6 +373,8 @@ recompile force = io $ do ["Error detected while loading xmonad configuration file: " ++ src] ++ lines ghcErr ++ ["","Please check the file for errors."] doubleFork $ executeFile "xmessage" True [msg] Nothing + return (status == ExitSuccess) + else return True where getModTime f = catch (Just <$> getModificationTime f) (const $ return Nothing) -- | Run a side effecting action with the current workspace. Like 'when' but |