import Language.Haskell.GhcImportedFrom
import Data.List
import Data.Maybe
import System.Environment
import System.IO()
import Control.Monad (forM_)
import Control.Monad.Writer
main :: IO ()
main = do
args <- getArgs
-- quick and dirty argument parsing, no error checking
let targetFile = args !! 0
targetModule = args !! 1
symbol = args !! 2
lineNo = (read $ args !! 3) :: Int
colNo = (read $ args !! 4) :: Int
rest = drop 5 args
-- assert: rest !! 0 == "--ghc-options"
let n = fromJust $ elemIndex "--ghc-pkg-options" rest
-- assert: rest !! n == "--ghc-pkg-options"
let ghcopts = GhcOptions $ tail $ take n rest
let ghcpkgopts = GhcPkgOptions $ drop (n + 1) rest
print ghcopts
print ghcpkgopts
(res, logMessages) <- runWriterT $ guessHaddockUrl targetFile targetModule symbol lineNo colNo ghcopts ghcpkgopts
case res of Right x -> do forM_ logMessages putStrLn
putStrLn $ "SUCCESS: " ++ x
Left err -> putStrLn $ "FAIL: " ++ show err