module System.ImportGraph.GetIface where
import           BinIface
import           ClassyPrelude
import           GHC
import           System.Process
import           TcRnMonad

findIfaces :: Ghc [ModIface]
findIfaces = do
    his <- liftIO findHiFiles
    _ <- setSessionDynFlags =<< getSessionDynFlags
    mapM getIface his

findHiFiles :: IO [FilePath]
findHiFiles = lines <$> readProcess "find" ["-iname", "*.hi"] ""

getIface :: FilePath -> Ghc ModIface
getIface filename = do
    hsc_env <- getSession
    liftIO . initTcRnIf 's' hsc_env () () $ readBinIface IgnoreHiWay QuietBinIFaceReading filename