packages feed

quipper-language-0.9.0.0: programs/quipperdoc.hs

-- | The QuipperDoc executable. This is just a wrapper around Haddock
-- with a custom preprocessor.

import System.Environment
import System.Exit
import System.Process

usage :: String -> IO ()
usage myname = do
  putStrLn $ myname ++ ": documentation generator for the Quipper language"
  putStrLn $ ""
  putStrLn $ "Usage: " ++ myname ++ " [--help|-h]"
  putStrLn $ "       " ++ myname ++ " [anything-other-than-the-above]"
  putStrLn $ ""
  putStrLn $ "Options:"
  putStrLn $ "   (no parameters)          : bitterly complain"
  putStrLn $ "   --help, -h               : print this message"
  putStrLn $ "   any-other-than-the-above : passed on to haddock"
  putStrLn $ ""
  putStrLn $ "This program is a wrapper around haddock."
  putStrLn $ "Its usage is therefore exactly the same as that of haddock."
  putStrLn $ "Try `haddock --help' for more information."

-- | Run Haddock with the given command line options.
runHaddock :: [String] -> IO ExitCode
runHaddock args = do
  rawSystem "haddock" args

-- | Run QuipperDoc with the given command line options.
runQuipperDoc :: [String] -> IO ExitCode
runQuipperDoc args = do
  runHaddock ("--optghc=-F" : "--optghc=-pgmF" : "--optghc=quipper-pp" : args)
    
main :: IO ()
main = do
  args <- getArgs
  myname <- getProgName
  case args of
   [] -> do
     putStrLn $ myname ++ ": no input files"
     putStrLn $ "For usage information, try the `--help' option."
     exitWith (ExitFailure 1)
   "-h" : _ -> do
     usage myname
     exitSuccess
   "--help" : _ -> do
     usage myname
     exitSuccess
   _ -> do
     r <- runQuipperDoc args
     exitWith r