hesql-0.7: HESQL.hs
module Main (main) where
import System.Environment
import Language.Haskell.Pretty
import System.FilePath
import Language.Haskell.Pretty
import HESQL.Parser (hesqlModule)
import HESQL.Translator
import Control.Monad(when, forM_)
import Text.Parsec.String (parseFromFile)
import System.Exit
import HESQL.Options
import Paths_hesql ( version )
import Data.Version (showVersion)
outputFile :: FilePath -> FilePath
outputFile file = replaceExtension file ".hs"
main :: IO ()
main = do
putStrLn $ "hesql " ++ showVersion version
argv <- getArgs
case getOpts argv of
Left msg -> putStrLn msg
Right (opts, files) -> do
forM_ files $ \ file -> do
when (outputFile file == file) $
error (file ++ "has a wrong extension")
modl <- parseFromFile hesqlModule file
case modl of
Left err -> do
print err
exitWith $ ExitFailure 1
Right modl' -> do
outp <- generateCode file opts modl'
writeFile (outputFile file) $
prettyPrint outp