{-# LANGUAGE FlexibleContexts #-}
module Futhark.CLI.Misc
( mainCheck
)
where
import Control.Monad.State
import System.IO
import System.Exit
import Futhark.Compiler
import Futhark.Util.Options
import Futhark.Pipeline
runFutharkM' :: FutharkM () -> IO ()
runFutharkM' m = do
res <- runFutharkM m NotVerbose
case res of
Left err -> do
dumpError newFutharkConfig err
exitWith $ ExitFailure 2
Right () -> return ()
mainCheck :: String -> [String] -> IO ()
mainCheck = mainWithOptions () [] "program" $ \args () ->
case args of
[file] -> Just $ runFutharkM' $ check file
_ -> Nothing
where check file = do (warnings, _, _) <- readProgram file
liftIO $ hPutStr stderr $ show warnings