Skip to content

Commit 1265474

Browse files
committed
Refactor cradle result unpacking
1 parent 3754f41 commit 1265474

File tree

1 file changed

+9
-17
lines changed

1 file changed

+9
-17
lines changed

exe/Wrapper.hs

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
{-# LANGUAGE RecordWildCards #-}
22
{-# LANGUAGE NamedFieldPuns #-}
3-
{-# LANGUAGE LambdaCase #-}
43
{-# LANGUAGE CPP #-}
54
-- | This module is based on the hie-wrapper.sh script in
65
-- https://github.com/alanz/vscode-hie-server
@@ -116,22 +115,20 @@ launchHaskellLanguageServer parsedArgs = do
116115
#else
117116
let Cradle { cradleOptsProg = CradleAction { runGhcCmd } } = cradle
118117
ghcBinary <- (fmap trim <$> runGhcCmd ["-v0", "-package-env=-", "-e", "putStr =<< System.Environment.getExecutablePath"])
119-
>>= \case
120-
CradleSuccess ghc -> do
121-
return ghc
122-
CradleFail error -> die $ "Failed to get project GHC executable path:" ++ show error
123-
CradleNone -> die "Failed get project GHC executable path, since we have a none cradle"
118+
>>= cradleResult "Failed to get project GHC executable path"
124119
libdir <- HieBios.getRuntimeGhcLibDir cradle
125-
>>= \case
126-
CradleSuccess lib -> do
127-
return lib
128-
CradleFail error -> die $ "Failed to get project GHC libdir path:" ++ show error
129-
CradleNone -> die "Failed get project GHC libdir path, since we have a none cradle"
120+
>>= cradleResult "Failed to get project GHC libdir path"
130121
env <- Map.fromList <$> getEnvironment
131122
let newEnv = Map.insert "GHC_BIN" ghcBinary $ Map.insert "GHC_LIBDIR" libdir env
132123
executeFile e True args (Just (Map.toList newEnv))
133124
#endif
134125

126+
127+
cradleResult :: String -> CradleLoadResult a -> IO a
128+
cradleResult _ (CradleSuccess a) = pure a
129+
cradleResult str (CradleFail e) = die $ str ++ ": " ++ show e
130+
cradleResult str CradleNone = die $ str ++ ": no cradle"
131+
135132
-- | Version of 'getRuntimeGhcVersion' that dies if we can't get it, and also
136133
-- checks to see if the tool is missing if it is one of
137134
getRuntimeGhcVersion' :: Show a => Cradle a -> IO String
@@ -145,12 +142,7 @@ getRuntimeGhcVersion' cradle = do
145142
Direct -> checkToolExists "ghc"
146143
_ -> pure ()
147144

148-
ghcVersionRes <- HieBios.getRuntimeGhcVersion cradle
149-
case ghcVersionRes of
150-
CradleSuccess ver -> do
151-
return ver
152-
CradleFail error -> die $ "Failed to get project GHC version:" ++ show error
153-
CradleNone -> die "Failed get project GHC version, since we have a none cradle"
145+
HieBios.getRuntimeGhcVersion cradle >>= cradleResult "Failed to get project GHC version"
154146
where
155147
checkToolExists exe = do
156148
exists <- findExecutable exe

0 commit comments

Comments
 (0)