module Hoogle.Operations.Convert(convert) where

import General.Code
import Hoogle.TextBase.All
import Hoogle.DataBase.All


-- error messages are given using trace and error
convert :: Bool -> [FilePath] -> FilePath -> FilePath -> IO ()
convert debugCheck deps tb db = do
    res <- parseTextBase tb
    case res of
        Left  x -> error $ show x
        Right x -> do
            dbs <- mapM loadDataBase deps
            let y = createDataBase dbs x
            saveDataBase db y

            when (debugCheck) $ do
                putStr "Validating... "
                hFlush stdout
                z <- loadDataBase db
                if show y == show z
                    then putStrLn "Success"
                    else exitMessage ["Failure, database did not match"]