    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"]