module Main where
import BasePrelude
import System.IO
import Conversion
import Conversion.Text
import Record.Syntax
import qualified Data.Text.IO as Text
import qualified Data.Text.Lazy.IO as LazyText
main =
do
[sourcePath, inputPath, outputPath] <- getArgs
inHandle <- openFile inputPath ReadMode
outHandle <- openFile outputPath WriteMode
Text.hGetContents inHandle >>= return . processModule >>= \case
Left x -> do
hPutStrLn stderr $ formatError x
hFlush outHandle
exitWith $ ExitFailure 1
Right x -> do
LazyText.hPutStrLn outHandle $ convert $ x
hFlush outHandle
exitWith $ ExitSuccess
where
formatError ((line, column), message) =
"Error at " <> show line <> ":" <> show column <> ": " <> message