Skip to content

Commit 7246790

Browse files
committed
Fallback if cabal-helper throws an Exception
1 parent 612dc20 commit 7246790

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/Ide/Cradle.hs

+11-8
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import System.Directory (getCurrentDirectory, canonicalizePath, findEx
3232
import System.Exit
3333
import System.FilePath
3434
import System.Process (readCreateProcessWithExitCode, shell, CreateProcess(..))
35+
import Exception (tryIO)
3536

3637

3738
-- ---------------------------------------------------------------------
@@ -68,15 +69,17 @@ implicitCradle fp = do
6869
CradleAction
6970
{ actionName
7071
, runCradle = \logF fp -> do
71-
res <- chRunCradle logF fp
72+
let fallback errMsg = do
73+
warningm $ "Error loading " ++ cradleDisplay crd ++ " using cabal-helper: " ++ errMsg
74+
warningm $ "Fallback to hie-bios implicit cradle"
75+
implCradle :: Cradle CabalHelper <- loadImplicitCradle fp
76+
implRes <- (runCradle (cradleOptsProg implCradle)) logF fp
77+
return implRes
78+
res <- tryIO $ chRunCradle logF fp
7279
case res of
73-
CradleFail (CradleError _ex stde) -> do
74-
warningm $ "Error loading " ++ cradleDisplay crd ++ "using cabal-helper: " ++ unlines stde
75-
warningm $ "Fallback to hie-bios implicit cradle"
76-
implCradle :: Cradle CabalHelper <- loadImplicitCradle fp
77-
implRes <- (runCradle (cradleOptsProg implCradle)) logF fp
78-
return implRes
79-
_ -> return res
80+
Left x -> fallback (show x)
81+
Right (CradleFail (CradleError _ex stde)) -> fallback (unlines stde)
82+
Right chRes -> return chRes
8083
}
8184
}
8285

0 commit comments

Comments
 (0)