module Main where
import Control.Applicative ((<$>))
import Control.Arrow ((>>>),(<<<))
import Language.Prolog (consult, parseQuery)
import ParseArgs (parseArgs)
import GraphViz (resolveTree, resolveTreeToFile)
main = do
(queryString, files, output) <- parseArgs
p <- concat <$> mapM ((abortOnError=<<) . consult) files
q <- abortOnError $ parseQuery queryString
resolveTreeToFile output p q
--case output of
-- Nothing -> resolveTree p q {- FIXME Never shown since thread terminated. -}
-- Just file -> resolveTreeToFile file p q >> return ()
abortOnError = either (error . show) return