-- | The Quipper Interpreter executable. This is just a wrapper around
-- GHC with a custom preprocessor.
import System.Environment
import System.Exit
import System.Process
usage :: String -> IO ()
usage myname = do
putStrLn $ myname ++ ": interactive interface to the Quipper compiler"
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 ghci"
putStrLn $ ""
putStrLn $ "This compiler is a wrapper around ghci."
putStrLn $ "Its usage is therefore exactly the same as that of ghci."
putStrLn $ "Try `ghci --help' for more information."
-- | Run GHCI with the given command line options.
runGHCI :: [String] -> IO ExitCode
runGHCI args = do
rawSystem "ghci" args
-- | Run QuipperI with the given command line options.
runQuipperI :: [String] -> IO ExitCode
runQuipperI args = do
runGHCI ("-F" : "-pgmF" : "quipper-pp" : args)
main :: IO ()
main = do
args <- getArgs
myname <- getProgName
case args of
"-h" : _ -> do
usage myname
exitSuccess
"--help" : _ -> do
usage myname
exitSuccess
_ -> do
r <- runQuipperI args
exitWith r