Skip to content

Commit fecba77

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

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

exe/Wrapper.hs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -116,22 +116,20 @@ launchHaskellLanguageServer parsedArgs = do
116116
#else
117117
let Cradle { cradleOptsProg = CradleAction { runGhcCmd } } = cradle
118118
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"
119+
>>= cradleResult "Failed to get project GHC executable path"
124120
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"
121+
>>= cradleResult "Failed to get project GHC libdir path"
130122
env <- Map.fromList <$> getEnvironment
131123
let newEnv = Map.insert "GHC_BIN" ghcBinary $ Map.insert "GHC_LIBDIR" libdir env
132124
executeFile e True args (Just (Map.toList newEnv))
133125
#endif
134126

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

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"
146+
HieBios.getRuntimeGhcVersion cradle >>= cradleResult "Failed to get project GHC version"
154147
where
155148
checkToolExists exe = do
156149
exists <- findExecutable exe

0 commit comments

Comments
 (0)