@@ -41,6 +41,7 @@ import GHC hiding (def)
4141import qualified GHC.Paths
4242
4343import HIE.Bios
44+import HIE.Bios.Ghc.Api (initializeFlagsWithCradle)
4445
4546-- Set the GHC libdir to the nix libdir if it's present.
4647getLibdir :: IO FilePath
@@ -76,7 +77,7 @@ main = do
7677 -- Note that this whole section needs to change once we have genuine
7778 -- multi environment support. Needs rewriting in terms of loadEnvironment.
7879 putStrLn "[1/6] Finding hie-bios cradle"
79− cradle <- findCradle (dir <> "/")
80+ cradle <- getCradle dir
8081 print cradle
8182
8283 putStrLn "\n[2/6] Converting Cradle to GHC session"
@@ -138,5 +139,13 @@ newSession' cradle = getLibdir >>= \libdir -> do
138139
139140loadEnvironment :: FilePath -> IO (FilePath -> Action HscEnvEq)
140141loadEnvironment dir = do
141− res <- liftIO $ newSession' =<< findCradle (dir <> "/")
142+ res <- liftIO $ newSession' =<< getCradle dir
142143 return $ const $ return res
144+
145+getCradle :: FilePath -> IO Cradle
146+getCradle dir = do
147+ dir <- pure $ addTrailingPathSeparator dir
148+ mbYaml <- findCradle dir
149+ case mbYaml of
150+ Nothing -> loadImplicitCradle dir
151+ Just yaml -> loadCradle yaml